[英]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.