在javascript中选择具有特定属性值的节点

时间:2015-06-10 13:08:56

标签: javascript xml

在那个XML中:

<elements>
        <product id="1">
                <brand>xxxxxxx</brand>
                <dci>xxxxx</dci>
                <therapeutic_area>xxxxxx</therapeutic_area>
        </product>
        <product id="2">
                <brand>xxxxxx</brand>
                <dci>xxxx</dci>
                <therapeutic_area>xxxx</therapeutic_area>
        </product>
        <product id="3">
                <brand>xxx</brand>
                <dci>xxxx</dci>
                <therapeutic_area>xxxxx</therapeutic_area>
        </product>

我需要选择具有特定属性值的节点。例如2

我尝试了这个,但它不起作用:

alert(xmlDoc.getElementsByTagName("product")[0].getAttributeNode("2"));

提前感谢您的帮助

4 个答案:

答案 0 :(得分:1)

试试这个

var list=xmlDoc.getElementsByTagName("product");
for (i=0;i<list.length;i++)
{
     if(list[i].getAttribute("id")==2){
        // Found your node
     }
} 

答案 1 :(得分:1)

var xmlfile = "<elements><product id=\"1\"><brand>xxxxxxx</brand><dci>xxxxx</dci><therapeutic_area>xxxxxx</therapeutic_area></product><product id=\"2\"><brand>xxxxxx</brand><dci>xxxx</dci><therapeutic_area>xxxx</therapeutic_area></product><product id=\"3\"><brand>xxx</brand><dci>xxxx</dci><therapeutic_area>xxxxx</therapeutic_area></product></elements>";

var parser = new DOMParser();

xmlDocument = parser.parseFromString(xmlfile,"text/xml");

var products = xmlDocument.getElementsByTagName("product");

for (var i = 0; i < products.length; ++i) {
    if (products[i].getAttribute("id") == 2) {
       // product id is 2.   
    }
}

http://jsfiddle.net/dvgLhw66/ &lt; - 工作小提琴。

您使用的是错误的原型。 getAttributeNode不存在,您正在寻找getAttribute。

答案 2 :(得分:1)

var node = xmlDoc.getElementsByTagName("product");
for (var index in node) {
    if (node[index].getAttribute("id") == "2") {
        alert();
    }
}

答案 3 :(得分:0)

我真的不明白你在这里尝试做什么,但尝试这样的事情。

alert(document.querySelector("[id='2']").querySelector('brand'));

请参阅querySelector

相关问题