JQuery:解析XML文档以查找具有特殊字符':'的标记

时间:2012-04-17 05:59:32

标签: jquery jquery-mobile xml-parsing

我必须解析一个包含某些标签的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.     
  3. 如果我删除了冒号':'字符,那么它就能够成功解析xml。
  4.        

代码:

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

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

1 个答案:

答案 0 :(得分:3)

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

要选择具有给定前缀的项目,并假设您正在ajax调用的success回调中进行选择,我认为您需要这样的内容:

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文档之外的任何内容。