0

我必须解析具有某些标签的 xml 文档,如下所示:

        <result>
            <ns0:Item>
                <ItemID>1365</ItemID>
                <ItemNumber>671150</ItemNumber>
            </ns0:Item>
            <ns0:Item>
                <ItemID>1305</ItemID>
                <ItemNumber>6700150</ItemNumber>
            </ns0:Item>
        </result>
  1. 如果我想“查找”文档是否包含标签'ns0:Item',则以下代码无法执行此操作。
  2. 如果我删除冒号“:”字符,则它能够成功解析 xml。

代码:

$(document).find('ns0:Item').each(function(){
    ....<br/>
    ....<br/>
    ....<br/>
});

请帮助如何解析 ':' xml 中的字符。
谢谢!

4

1 回答 1

3

冒号将命名空间前缀与元素名称分开。前缀的值在语义上并不重要;重要的是命名空间字符串。在您的情况下ns0是指代码中未显示的字符串;它很可能在您的 XML 文档顶部附近的某个地方指定。

要选择具有给定前缀的项目,并假设您在successajax 调用的回调中进行选择,我认为您需要这样的东西:

success: function(xml) {
    var ns = "uri:whatever";  // the actual namespace, not the prefix
    $(xml).find('Item').each(function(){
        if ($(this).get(0).namespaceURI == ns) {
           ....
        }
    });
}

document在代码中用作变量名,表示一个 XML 文档。这似乎令人困惑。我建议不要使用该名称document来引用浏览器的 HTML 文档以外的任何内容。

于 2012-04-17T06:13:56.113 回答