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>
儿童的xpath
个节点? javascript dom中是否有很好的{{1}} api?
答案 0 :(得分:3)
jQuery has an api用于解析和遍历xml。
var xmlObj = $.parseXML(xmlObj);
var nameNodes = xmlObj.find('product > name');
来自doc ..
jQuery.parseXML使用浏览器的本机解析功能 创建有效的XML文档。然后可以将此文档传递给 jQuery创建一个可以遍历的典型jQuery对象 操纵。
答案 1 :(得分:3)
在现代浏览器中,您可以使用querySelector
遍历xml-tree。假设您的xml位于div#xmlsample
内,那么此代码将为//product/name
中的prodNames
提供一个nodeList:
var xmlDoc = (new DOMParser())
.parseFromString(document.querySelector('#xmlsample').innerHTML,
"application/xml"),
prodNames = xmlDoc.querySelectorAll('product name');
答案 2 :(得分: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文档的顶级元素的子元素。 / p>