3

xml文件是这样的:

<products>
  <product>
   <id>1</id>
   <name>pen</name>
  </product>
  <product>
   <id>2</id>
   <name>pencil</name>
  </product>
</products>
<employees>
  <employee>
   <name>Jack</name>
  <employee>
  <employee>
   <name>Mark</name>
  <employee>
</employees>

我只能得到<name>子节点<product>吗?xpathjavascript dom中是否有适应良好 的api?

4

3 回答 3

4

在现代浏览器中,您可以使用它querySelector来遍历 xml-tree。假设您的 xml 位于div#xmlsample其中,那么此代码将为您提供//product/namein的 nodeList prodNames

var xmlDoc = (new DOMParser())
              .parseFromString(document.querySelector('#xmlsample').innerHTML,
              "application/xml"),
    prodNames = xmlDoc.querySelectorAll('product name');

看到这个jsfiddle

于 2012-08-20T06:58:08.373 回答
3

jQuery 有一个用于解析和遍历 xml 的 api。

var xmlObj = $.parseXML(xmlObj);

var nameNodes = xmlObj.find('product > name');

从医生..

jQuery.parseXML 使用浏览器的原生解析功能来创建一个有效的 XML 文档。然后可以将此文档传递给 jQuery 以创建一个可以遍历和操作的典型 jQuery 对象。

于 2012-08-20T05:21:35.333 回答
1

我只能得到<name>子节点<product>吗?

提供的 XML 不是格式良好的 XML 文档(需要单个顶部元素)。

此外,两个<employee>开始标签没有相应</employee>的结束标签。

如果正确的 XML 文档是这样的

<company>
    <products>
        <product>
            <id>1</id>
            <name>pen</name>
        </product>
        <product>
            <id>2</id>
            <name>pencil</name>
        </product>
    </products>
    <employees>
        <employee>
            <name>Jack</name>
        </employee>
        <employee>
            <name>Mark</name>
        </employee>
    </employees>
</company>

并且确实需要一个 XPath 表达式,那么选择所需元素的一个 XPath 表达式是:

/*/products/product/name

这将选择作为任何name元素的子product元素的任何products元素,该元素是作为 XML 文档顶部元素的子元素的任何元素的子元素的子元素。

于 2012-08-20T12:39:32.717 回答