我是jQuery的新手,我想解析一个XML文档。
我能够使用默认名称空间解析常规XML,但使用XML,例如:
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly" rs:CommandTimeout="30">
<s:AttributeType name="ows_ID" rs:name="ID" rs:number="1">
<s:datatype dt:type="i4" dt:maxLength="4" />
</s:AttributeType>
<s:AttributeType name="ows_DocIcon" rs:name="Type" rs:number="2">
<s:datatype dt:type="string" dt:maxLength="512" />
</s:AttributeType>
<s:AttributeType name="ows_LinkTitle" rs:name="Title" rs:number="3">
<s:datatype dt:type="string" dt:maxLength="512" />
</s:AttributeType>
<s:AttributeType name="ows_ServiceCategory" rs:name="Service Category" rs:number="4">
<s:datatype dt:type="string" dt:maxLength="512" />
</s:AttributeType>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row ows_ID="2" ows_LinkTitle="Sample Data 1" />
<z:row ows_ID="3" ows_LinkTitle="Sample Data 2" />
<z:row ows_ID="4" ows_LinkTitle="Sample Data 3" />
</rs:data>
</xml>
我真正想要的是<z:row>
。
到目前为止,我一直在使用:
$.get(xmlPath, {}, function(xml) {
$("rs:data", xml).find("z:row").each(function(i) {
alert("found zrow");
});
}, "xml");
真的很不走运。有什么想法吗?
发布于 2009-05-13 14:31:45
这样啊,原来是这么回事。
原来它需要\\
来转义冒号。
$.get(xmlPath, {}, function(xml) {
$("rs\\:data", xml).find("z\\:row").each(function(i) {
alert("found zrow");
});
}, "xml");
正如Rich所指出的:
更好的解决方案不需要转义,可以在所有“现代”浏览器上运行:
.find("[nodeName=z:row]")
发布于 2012-05-08 04:02:37
我花了几个小时阅读这篇关于插件和各种解决方案的文章,但没有任何收获。
ArnisAndy发布了一个jQuery讨论的链接,其中提供了这个答案,我可以确认这在使用jQuery (v1.7.2)的Chrome(v18.0)、FireFox(v11.0)、IE(v9.08)和Safari (v5.1.5)中都有效。
我正在尝试抓取一个WordPress提要,其中的内容名为,这就是对我有效的方法:
content: $this.find("content\\:encoded, encoded").text()
发布于 2011-03-12 09:16:42
如果您使用的是jquery 1.5,则必须在节点选择器属性值两边添加引号才能使其工作:
.find('[nodeName="z:row"]')
https://stackoverflow.com/questions/853740
复制相似问题