[英]Parse XML without DOM parser and store values in a Map using JavaScript
[英]How to parse this XML using javascript DOM?
这是我的xml
<colors>
<SET name="temp">
<menu>#9c7db5</menu>
<menuTxt>#ffffff</menuTxt>
<tH>#FFF</tH>
<tHTxt>#000</tHTxt>
<head>#919191</head>
<headTxt>#ffffff</headTxt>
<label>#2e2e2e</label>
<but>#8f8f8f</but>
<butTxt>#ffffff</butTxt>
<footer>#FFF</footer>
<footTxt>#000</footTxt>
<backT>#FFF</backT>
</SET>
<SET name="footercheck">
<menu>#6492c4</menu>
<menuTxt>#ffffff</menuTxt>
<tH>#FFF</tH>
<tHTxt>#000</tHTxt>
<head>#4275b3</head>
<headTxt>#ffffff</headTxt>
<label>#0a0a66</label>
<but>#3b66a8</but>
<butTxt>#ffffff</butTxt>
<footer>#5f90b0</footer>
<footTxt>#ffffff</footTxt>
<backT>#FFF</backT>
</SET>
</colors>
用户将按<SET>
标记的“名称”属性搜索。 给定名称与任何<SET>
标记匹配后,我需要获取其所有子节点值。 ( <menu><menutxt>
)。
到目前为止,这是我尝试过的
function parseXML{
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}var y;
xmlhttp.open("GET","style/userTheme.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var x=xmlDoc.getElementsByName(iid); //'iid' is user's input
for (var i = 0; i < x.length; i++) {
x[i].childNodes[0].nodeValue
}
}
我检查了“ X”的长度,它是“ 1”。 因此,它将整个XML过滤为一个<SET>
。 但是我不知道该如何进一步。 如果您知道,请给我答复。
您显示的不是有效的XML。 它没有第一行指示它是XML文档。 缺少以下行,这可能在解析时导致您遇到问题。
<?xml version="1.0" encoding="UTF-8"?>
如果希望给定名称的所有子节点,则有两种方法。
您可以迭代所有节点,找到具有给定名称的节点,然后检索其所有子节点。 修改代码段后,您可以将其作为函数的结果返回,并随心所欲地执行(例如显示它们)。
var childrenNodes = new Array(); for (var i = 0; i < x.length; i++) { childrenNodes[i] = x[i].childNodes[0].nodeValue; } return childrenNodes;
另一种方法是使用XQuery或XPath 在DOM中查询特定元素,然后返回结果。
var result = doc.evaluate('/form/set[name='+iid+']', xmlDoc, null, XPathResult.STRING_TYPE, null); return result;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.