如何使用 jQuery 进行带命名空间的 XML 解析 [英] How to use jQuery for XML parsing with namespaces

查看:29
本文介绍了如何使用 jQuery 进行带命名空间的 XML 解析的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是 jQuery 新手,想解析一个 XML 文档.

I'm new to jQuery and would like to parse an XML document.

我可以使用默认命名空间解析常规 XML,但使用 XML,例如:

I'm able to parse regular XML with the default namespaces but with XML such as:

<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>.

到目前为止,我一直在使用:

So far, I've been using:

$.get(xmlPath, {}, function(xml) {
    $("rs:data", xml).find("z:row").each(function(i) {
        alert("found zrow");
    });
}, "xml");

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

with really no luck. Any ideas?

推荐答案

我明白了.

原来它需要 \ 来转义冒号.

Turns out that it requires \ to escape the colon.

$.get(xmlPath, {}, function(xml) {
    $("rs\:data", xml).find("z\:row").each(function(i) {
        alert("found zrow");
    });
}, "xml");

正如 Rich 指出的:

As Rich pointed out:

更好的解决方案不需要转义并且适用于所有现代"浏览器:

The better solution does not require escaping and works on all "modern" browsers:

.find("[nodeName=z:row]")

这篇关于如何使用 jQuery 进行带命名空间的 XML 解析的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆