Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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:从XMLDocument获取子节点_Javascript_Json_Xml_Xml Parsing - Fatal编程技术网

Javascript:从XMLDocument获取子节点

Javascript:从XMLDocument获取子节点,javascript,json,xml,xml-parsing,Javascript,Json,Xml,Xml Parsing,假设我在var response中存储了以下XMLHttpRequest() {"success":true,"error":null,"body":"<modules>\n <total>5<\/total>\n <status>\n <id>0<\/id>\n <name>Archon<\/name>\n <portCount>14<\/portCount>\n &

假设我在
var response
中存储了以下XMLHttpRequest()

{"success":true,"error":null,"body":"<modules>\n <total>5<\/total>\n <status>\n  <id>0<\/id>\n  <name>Archon<\/name>\n  <portCount>14<\/portCount>\n  <attached>true<\/attached>\n <\/status>\n <status>\n  <id>1<\/id>\n  <name>PC4<\/name>\n  <portCount>0<\/portCount>\n  <attached>false<\/attached>\n <\/status>\n <status>\n  <id>2<\/id>\n  <name>APC<\/name>\n  <portCount>0<\/portCount>\n  <attached>false<\/attached>\n <\/status>\n <status>\n  <id>3<\/id>\n  <name>SL1<\/name>\n  <portCount>0<\/portCount>\n  <attached>false<\/attached>\n <\/status>\n <status>\n  <id>4<\/id>\n  <name>SW5-1<\/name>\n  <portCount>0<\/portCount>\n  <attached>false<\/attached>\n <\/status>\n <status>\n  <id>5<\/id>\n  <name>ALC<\/name>\n  <portCount>0<\/portCount>\n  <attached>false<\/attached>\n <\/status>\n <status>\n  <id>65<\/id>\n  <name>VirtualModule<\/name>\n  <portCount>16<\/portCount>\n  <attached>true<\/attached>\n <\/status>\n<\/modules>\n"}
var xml
中的对象是字符串,因此我尝试将其解析为XMLDocument:

var xmlDoc = new DOMParser().parseFromString(xml, 'text/xml');
这里的问题是我不知道如何到达子节点。我尝试了以下方法来获得total的值(应该是5):

但我得到的只是一个空白字符串。我觉得这应该很简单,但我就是不明白。一旦我想得到各种名称标签的值,我就更加不知所措了


如何获取子节点的值?

根据要求,请尝试以下代码

var response={“success”:true,“error”:null,“body”:“\n 5\n\n 0\n Archon\n 14\n true\n\n\n 1\n PC4\n 0\n false\n\n\n 2\n APC\n 0\n false\n\n\n\n\n 3\n SL1\n 0\n false\n\n\n\n\n\n 4\n SW5-1\n 0\n false\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ALC\n 0\n 0\n false\n false\n false\n\n\n\n\n false\n\n\n\n\n\n\n\n\n\n\;
var xml=response.body;
var xmlDoc=new DOMParser().parseFromString(xml,'text/xml');
var allChildNodes=xmlDoc.documentElement.childNodes;
var total=allChildNodes[1]。textContent;

警报(总数)字符串不是空的

console.log(xmlDoc.getElementsByTagName("modules")[0].childNodes[0].nodeValue.charCodeAt(0));

10
这是回车的ASCII码。您可以查看以了解有关
childNodes
childrends
的更多信息
xmlDoc.children
将为您提供一个HTML集合,您可以遍历该集合并从中提取信息


注意:我建议编辑问题的标题,以便对将来可能看到它的人更有帮助。

你不会得到一个空字符串
…nodeValue.toString()[0].charCodeAt(0)=10
这是回车符,不是空的。@jrook谢谢!这允许我遍历节点。是否有方法获取节点值?我知道
var total=xmlDoc.children[0].children[0]
是子节点,但如何从中获取值?使用nodeValue
.children[0]。childNodes[0]。nodeValue=“5”
节点总数没有任何子节点。不过它有childNodes。@非常感谢您!我设法得到了我需要的东西。
console.log(xmlDoc.getElementsByTagName("modules")[0].childNodes[0].nodeValue);
console.log(xmlDoc.getElementsByTagName("modules")[0].childNodes[0].nodeValue.charCodeAt(0));

10