相关疑难解决方法(0)

使用命名空间进行jQuery XML解析

我是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>
Run Code Online (Sandbox Code Playgroud)

我真正想要的只是他们<z:row>的.

到目前为止,我一直在做:

$.get(xmlPath, {}, function(xml) …
Run Code Online (Sandbox Code Playgroud)

javascript xml jquery xsd namespaces

80
推荐指数
7
解决办法
6万
查看次数

XPath - 按属性命名空间查找元素

我正在尝试使用XPath来查找在给定命名空间中具有元素的所有元素.

例如,在下面的文档中,我想找到foo:bar和doodah元素

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:foo="http://foo.example.com">
  <foo:bar quux="value">Content</foo:bar>
  <widget>Content</widget>
  <doodah foo:quux="value">Content</doodah>
</root>
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用以下XPath表达式来加载给定命名空间中的所有属性

"//@*[namespace-uri()='http://foo.example.com']"
Run Code Online (Sandbox Code Playgroud)

然而:

  • 这不会给我元素,只有属性和
  • 其中elements包含来自该命名空间的多个属性,此XPath将返回每个属性而不是每个元素的结果

是否有可能获得我想要的东西,或者我只需要收集属性并计算它们对应的唯一元素集?

编辑:Dimitre Novatchev给了我以下答案.我没有意识到你可以在这样的谓词中嵌套谓词:

"//*[@*[namespace-uri()='http://foo.example.com']]"
Run Code Online (Sandbox Code Playgroud)

具体来说,这表示"任何具有任何属性的元素都具有namespace-uri ='...'"

xml xpath namespaces

20
推荐指数
1
解决办法
4万
查看次数

标签 统计

namespaces ×2

xml ×2

javascript ×1

jquery ×1

xpath ×1

xsd ×1