繁体   English   中英

如何使用JavaScript DOM解析此XML?

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

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