Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript DOM api中获取具有给定条件的子节点?_Javascript_Xml_Dom_Xpath - Fatal编程技术网

如何在javascript DOM api中获取具有给定条件的子节点?

如何在javascript DOM api中获取具有给定条件的子节点?,javascript,xml,dom,xpath,Javascript,Xml,Dom,Xpath,xml文件如下所示: <products> <product> <id>1</id> <name>pen</name> </product> <product> <id>2</id> <name>pencil</name> </product> </products> <employe

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>

1.
笔
2.
铅笔
杰克
做记号
我只能获取
节点,它们是
的子节点吗?javascript dom中是否有适合解析和遍历xml的
xpath
api

var xmlObj = $.parseXML(xmlObj);

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

从医生那里

parseXML使用浏览器的本机解析函数 创建有效的XML文档。然后可以将此文档传递给 jQuery创建一个典型的jQuery对象,该对象可以被遍历和 操纵


在现代浏览器中,可以使用
querySelector
遍历xml树。假设您的xml驻留在
div#xmlsample
中,那么此代码将为
prodNames
中的
//产品/名称
提供节点列表:

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

我只能获取
节点,它们是
的子节点吗

提供的XML不是格式良好的XML文档(需要一个top元素)

另外,两个开始标记没有相应的结束标记

如果正确的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>

这将选择任何
名称
元素,该元素是任何
产品
元素的子元素,该元素是任何
产品
元素的子元素,该元素是XML文档顶部元素的子元素。

太酷了!但是有没有关于这个的javascript本机实现呢?您要求提供一个经过修改的API。对于一些本机实现,请参阅。+1以获得真正好的格式化答案,我在ruby中使用nokogiri用于xpath,是否有对javascript的本机xpath支持,以及良好的适应性?@yozloy,如果您搜索“javascript xpath支持”,您将找到几个很好的链接,如下所示:
/*/products/product/name