这是我的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>标记的“name”属性进行搜索。一旦给定的名称与任何<SET>标记相匹配,我就需要获取它的所有子节点的值。(<menu><menutxt>..etc)。
这就是我到目前为止所尝试的。
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>。但我不知道如何继续下去。如果你知道,请给我回复。
发布于 2014-01-18 15:47:09
您显示的不是有效的XML。它没有第一行指示它是一个XML文档。下面这一行丢失了,这可能会在解析时给您带来问题。
<?xml version="1.0" encoding="UTF-8"?>如果希望的所有子节点都具有给定的名称,有两种方法可以实现。
childrenNodes;
var result = doc.evaluate('/form/setname='+iid+'',xmlDoc,null,XPathResult.STRING_TYPE,null);返回结果;
https://stackoverflow.com/questions/21200216
复制相似问题