我必须解析一个包含某些标签的xml文档,如下所示:
<result>
<ns0:Item>
<ItemID>1365</ItemID>
<ItemNumber>671150</ItemNumber>
</ns0:Item>
<ns0:Item>
<ItemID>1305</ItemID>
<ItemNumber>6700150</ItemNumber>
</ns0:Item>
</result>
- 如果我想“查找”文档是否包含'ns0:Item'标记,则以下代码无法执行此操作。
- 如果我删除了冒号':'字符,那么它就能够成功解析xml。
醇>
代码:
$(document).find('ns0:Item').each(function(){
....<br/>
....<br/>
....<br/>
});
请帮助解析如何解析xml中的':'字符 谢谢!
答案 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文档之外的任何内容。