繁体   English   中英

使用JavaScript解析XML子级

[英]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字符串,我看到了一些特殊字符,例如&#13;&#10; 系统标签后

所以我认为您的解决方案不适合我

请帮助我如何忽略这个特殊字符并获取解析字符串

捕获的XML:

<Result><system>&#13;&#10; <STATIC>&#13;&#10; <Tag1>2015-10-29T02:02:38-08:00</Tag1>&#13;&#10; <Tag2>264000000</Tag2>&#13;&#10; <Tag3>32696320</Tag3></STATIC>&#13;&#10; </system></Result>

system是单个节点,而不是节点阵列。 尝试使用

var staticResp = system.childNodes[0];

演示版

您可以使用.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM