简体   繁体   English

使用JavaScript和XML通过索引获取元素名称

[英]Get element name by index using JavaScript and XML

How do I access an element from an XML document if I do not know the elements name. 如果不知道元素名称,如何从XML文档访问元素。

<test_data>
    <title>test data</title>
        <test id="1">
             <test_1>
                 <example_1>Example 1 Text</example_1>
                 <example_2>Example 2 Text</example_2>
                 <example_3>Example 3 Text</example_3>
             </test_1>
        </test>
        <test id="2">
             <test_2>
                 <example_1>Example 1 Text</example_1>
                 <example_2>Example 2 Text</example_2>
                 <example_3>Example 3 Text</example_3>
             </test_2>
        </test>
        <test id="3">
             <test_3>
                 <example_1>Example 1 Text</example_1>
                 <example_2>Example 2 Text</example_2>
                 <example_3>Example 3 Text</example_3>
             </test_3>
        </test>
</test_data>

How can I access the elements "test_1", "test_2", "test_3". 如何访问元素“ test_1”,“ test_2”,“ test_3”。 In practice I will not know the names of these elements, but I will know the index. 在实践中,我将不知道这些元素的名称,但将了解索引。

I cannot use getElementsByTagName, since this name is dynamic for this element. 我不能使用getElementsByTagName,因为此名称对于此元素是动态的。 I would like to retrieve the nodes name. 我想检索节点名称。

I have tried the following to retrieve the element . 我已经尝试了以下方法来检索元素。

x = xmlhttp.responseXML.documentElement.getElementsByTagName("test");
x[0].firstChild.nodeName;

This returns #text and not the node name. 这将返回#text而不是节点名称。

Any suggestions? 有什么建议么?

Plunker Demo 柱塞演示

JS JS

var xml = "<test_data><title>test data</title><test id='1'><test_1><example_1>Example 1 Text</example_1><example_2>Example 2 Text</example_2><example_3>Example 3 Text</example_3></test_1></test><test id='2'><test_2><example_1>Example 1 Text</example_1><example_2>Example 2 Text</example_2><example_3>Example 3 Text</example_3></test_2></test><test id='3'><test_3><example_1>Example 1 Text</example_1><example_2>Example 2 Text</example_2><example_3>Example 3 Text</example_3></test_3></test></test_data>";

if (window.DOMParser)
{
  parser=new DOMParser();
  xmlDoc=parser.parseFromString(xml,"text/xml");
}
else // Internet Explorer
{
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async=false;
  xmlDoc.loadXML(xml); 
}

var x=xmlDoc.getElementsByTagName("test");
console.log(x);

for (i=0;i < x.length; i++){
  console.log(x[i].childNodes[0].nodeName);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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