[英]Parsing XML child using JavaScript
我有以下XML格式
<Result>
<system>
<STATIC>
<Tag1>2015-10-29T02:02:38-08:00</Tag1>
<Tag2>264000000</Tag2>
<Tag3>32696320</Tag3>
</STATIC>
</system>
</Result>
我已经尝试了下面的代码来解析孩子
if(window.DOMParser)
{
parser=new DOMParser();
xmlDoc=parser.parseFromString(res,"text/xml");
}
else // Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.loadXML(res);
}
var result=xmlDoc.getElementsByTagName("Result"); // Result child
对于系统儿童
var system=result[0].childNodes[0];
但是,当我尝试获取<system>
标记子代时,它给了我错误
var staticResp=system[0].childNodes[0];
错误:未被捕获的TypeError:无法读取未定义(...)的属性'childNodes'
所以,请您能帮我如何获得<static>
子代及其使用标签名称的价值
谢谢你们的快速回复
我已经在ajax响应中超越了XML。 我使用调试工具捕获了xml字符串,我看到了一些特殊字符,例如
系统标签后
所以我认为您的解决方案不适合我
请帮助我如何忽略这个特殊字符并获取解析字符串
捕获的XML:
<Result><system> <STATIC> <Tag1>2015-10-29T02:02:38-08:00</Tag1> <Tag2>264000000</Tag2> <Tag3>32696320</Tag3></STATIC> </system></Result>
您可以使用.getElementsByTagName
并按名称获取标签,而无需childNodes
var xmlData = '<Result>' + '<system>' + '<STATIC>' + '<Tag1>2015-10-29T02:02:38-08:00</Tag1>' + '<Tag2>264000000</Tag2>' + '<Tag3>32696320</Tag3>' + '</STATIC>' + '</system>' + '</Result>'; var parser = new DOMParser(); var xmlDoc = parser.parseFromString(xmlData, 'text/xml'); var result = xmlDoc.getElementsByTagName('Result'); var static = xmlDoc .getElementsByTagName('system')[0] .getElementsByTagName('STATIC')[0]; console.log(static.getElementsByTagName('Tag1')[0].innerHTML); console.log(static.getElementsByTagName('Tag2')[0].innerHTML); console.log(static.getElementsByTagName('Tag3')[0].innerHTML);
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
getElementsByTagName()
返回一个HTMLCollection
。 您可以执行以下操作:
var staticResp = doc.getElementsByTagName('STATIC')[0];
var xmlText = '<Result>\\ <system>\\ <STATIC>\\ <Tag1>2015-10-29T02:02:38-08:00</Tag1>\\ <Tag2>264000000</Tag2>\\ <Tag3>32696320</Tag3>\\ </STATIC>\\ </system>\\ </Result>'; var parser = new DOMParser(); var doc = parser.parseFromString(xmlText, "application/xml"); var staticResp = doc.getElementsByTagName('STATIC')[0]; for(var i = 0; i < staticResp.children.length; i++){ snippet.log(staticResp.children.item(i).tagName); }
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.