[英]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? 有什么建议么?
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.