首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中解析XML

在javascript中解析XML
EN

Stack Overflow用户
提问于 2011-04-21 00:58:48
回答 2查看 967关注 0票数 1

我有以下XML

代码语言:javascript
复制
<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>

如果我在xml编辑器中使用这个XPath

代码语言:javascript
复制
/plist/dict/array/dict/dict/string[2]

我拿回了版本。但是当我在JavaScript中有相同的代码时,我得不到任何东西。下面是我的JavaScript代码

代码语言:javascript
复制
var elements = doc.evaluate('//plist/dict/array/dict/dict/string[2]');

我没有拿回任何东西。elements将以undefined的身份出现。有线索知道为什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-21 01:08:26

https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript

这里有关于如何实现这一点的教程。

也许你可以检查一下

代码语言:javascript
复制
var elements = doc.evaluate('//plist/');

不是空的,然后再往前走。

票数 1
EN

Stack Overflow用户

发布于 2011-04-21 02:18:53

@Kooilnc是正确的,但是火狐似乎对你指定的XPathResult类型很挑剔。我希望XPathResult.ANY_TYPE能工作,但它不能。在我的测试中,只有UNORDERED_NODE_SNAPSHOT_TYPEORDERED_NODE_SNAPSHOT_TYPE可以工作。

例如:

代码语言:javascript
复制
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访问集合中的第一个。如果您的表达式返回多个节点,则可以像这样迭代它们:

代码语言:javascript
复制
for (var i = 0; i < result.snapshotLength; i++) {
    console.log(result.snapshotItem(i));
}

进一步阅读:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5733927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档