猿问

带有命名空间的jQueryXML解析

带有命名空间的jQueryXML解析

我对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");

真的没有运气。有什么想法吗?谢谢。


qq_花开花谢_0
浏览 479回答 3
3回答

慕娘9325324

这样啊,原来是这么回事。原来它需要\\逃出结肠。$.get(xmlPath,&nbsp;{},&nbsp;function(xml)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$("rs\\:data",&nbsp;xml).find("z\\:row").each(function(i)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("found&nbsp;zrow"); &nbsp;&nbsp;&nbsp;&nbsp;}); },&nbsp;"xml");正如里奇指出的:更好的解决方案不需要转义,可以在所有“现代”浏览器上工作:.find("[nodeName=z:row]")

鸿蒙传说

我花了几个小时阅读这个插件和各种解决方案,没有运气。ArnisAndy发布了一个指向jQuery讨论的链接,其中提供了这个答案,我可以确认这在使用jQuery(v1.7.2)的Chrome(v18.0)、Firefox(v11.0)、IE(v9.08)和Safari(v5.1.5)中都适用。我正在尝试刮一个WordPress提要,其中的内容名为<content:code>,这就是对我有用的内容:content:&nbsp;$this.find("content\\:encoded,&nbsp;encoded").text()
随时随地看视频慕课网APP
我要回答