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