用javascript解析XML
我有以下XML用javascript解析XML,javascript,Javascript,我有以下XML <plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict>
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>test1</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>test</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>subtitle</key>
<string>pixTraining</string>
<key>title</key>
<string>test</string>
</dict>
</dict>
</array>
</dict>
</plist>
我得到了版本。但是当我在JavaScript中有相同的代码时,我不会得到任何东西。这是我的JavaScript代码
var elements = doc.evaluate('//plist/dict/array/dict/dict/string[2]');
我什么也没拿回来<代码>元素以未定义
的形式出现。有什么线索吗?
这里有一个如何实现这一点的教程
也许你可以检查一下
var elements = doc.evaluate('//plist/');
不为空,然后继续 @Kooilnc的做法是正确的,但Firefox似乎对您指定的
XPathResult
类型很挑剔。我希望XPathResult.ANY_类型都能工作,但它不能。在我的测试中,只有无序节点快照类型
和有序节点快照类型
有效
例如:
var result = doc.evaluate("/plist/dict/array/dict/dict/string[2]",
doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
result.snapshotItem(0); // access the element
请注意,evaluate
返回一组匹配的节点。使用snapshotItem
访问集合中的第一个项目。如果表达式返回多个节点,则可以按如下方式对其进行迭代:
for (var i = 0; i < result.snapshotLength; i++) {
console.log(result.snapshotItem(i));
}
for(var i=0;i
进一步阅读:
for (var i = 0; i < result.snapshotLength; i++) {
console.log(result.snapshotItem(i));
}