Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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中仅获取另一个节点中的节点_Javascript_Xml_Dom - Fatal编程技术网

在javascript中仅获取另一个节点中的节点

在javascript中仅获取另一个节点中的节点,javascript,xml,dom,Javascript,Xml,Dom,这是我的XML <?xml version="1.0" encoding="ISO-8859-1" ?> <book> <title>My Title</title> <description></description> <chapter> <title>Chapter 1</title> <description>text inside chapter&

这是我的XML

<?xml version="1.0" encoding="ISO-8859-1" ?>
<book>
<title>My Title</title>
<description></description>
  <chapter>
    <title>Chapter 1</title>
    <description>text inside chapter</description>
  </chapter>
</book>
问题在于这些线路:

x=doc.getElementsByTagName("title")[k];

从“书籍”部分获取信息,而不是从章节获取信息

我相信有人知道如何得到这个


感谢在您的代码中使用
doc
变量,该变量似乎是从
document
对象继承的,请参阅

.getElementsByTagName(“title”)
方法返回一个标记数组
title
,它不仅出现在
章节中,而且出现在根元素
书籍中

从章节节点搜索,而不是从文档搜索

var chapters = doc.getElementsByTagName("chapter");
for(var i=0; i<chapters.length; ++i) {

  // search from book, which is what you don't want
  // doc.getElementsByTagName("title")[0];

  // search from chapter, you want this
  chapters[i].getElementsByTagName("title")[0];
}

您是否尝试过先获取章节集:

var chapters =doc.getElementsByTagName("chapter");
然后遍历每一章,在集合中找到该实例的子节点

if (chapters.length > 0)
{
   for (i = 0; i < resultList.length; i++) 
   {
      var title = chapters[i].getElementsByTagName("title")[0];
      var desc = chapters[i].getElementsByTagName("description")[0];

      // do work here
   }
}
if(chapters.length>0)
{
对于(i=0;i
为什么要将其标记为node js?@tomahim我的想法完全正确,我已将其删除。对不起,我知道了,但我犯了一个错误。
var titles = doc.querySelectorAll("chapter title");
alert(titles[0].innerHTML); // Chapter 1
var chapters =doc.getElementsByTagName("chapter");
if (chapters.length > 0)
{
   for (i = 0; i < resultList.length; i++) 
   {
      var title = chapters[i].getElementsByTagName("title")[0];
      var desc = chapters[i].getElementsByTagName("description")[0];

      // do work here
   }
}