我正在从Content.plist xml文件中提取值。我已经能够成功获取大部分数据。但是,我正在努力将其表示为一组字典:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>MEDataItemDisplayName</key>
<string></string>
<key>MEDataItemURLStringForBrowserViewing</key>
<string></string>
<key>MEDataItemUUID</key>
<string></string>
<key>MEPostTags</key>
<string></string>
<key>cargoKind</key>
<string>UnstructuredVideo</string>
<key>categoryTerms</key>
<array>
<dict>
<key>id</key>
<string>101</string>
<key>isPrimaryTerm</key>
<false/>
<key>name</key>
<string>Category A</string>
<key>persistenceTermVersion</key>
<integer>1</integer>
<key>termUseCount</key>
<integer>19</integer>
</dict>
<dict>
<key>id</key>
<string>62</string>
<key>isPrimaryTerm</key>
<false/>
<key>name</key>
<string>Category B</string>
<key>persistenceTermVersion</key>
<integer>1</integer>
<key>termUseCount</key>
<integer>5</integer>
</dict>
<dict>
<key>id</key>
<string>63</string>
<key>isPrimaryTerm</key>
<false/>
<key>name</key>
<string>Category C</string>
<key>persistenceTermVersion</key>
<integer>1</integer>
<key>termUseCount</key>
<integer>61</integer>
</dict>
</array>
</dict>
我可以通过以下方式获取第一个值文本:
//key[.='categoryTerms']/following-sibling::array/dict/key[.='name']/following-sibling::string[1]/text()
但是,我正在努力编写返回所有类别文本的xpath:
我试图为您重现错误,输出为
类别AC类别BC类别B
根据您输入的XML是正确的。
为了使输出更可口,您必须像这样使用XPath-2.0及其string-join()函数:
string-join(//key[.='categoryTerms']/following-sibling::array/dict/key[.='name']/following-sibling::string[1]/text(),'
')
输出将是:
Category A
Category B
Category B
第三个元素也是Category B
的原因来自您输入的XML。