在Javascript中使用DOM解析器获取子节点属性值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Javascript中使用DOM解析器获取子节点属性值相关的知识,希望对你有一定的参考价值。
我需要使用"templatedata"
获得RK1S
(javascript
)的值。
<additional_info>
<Param name="srno" value="B4745" />
<Param name="Device" value="Opn" />
<Param name="Support" value="0" />
<Param name="templatedata" value="Rk1S"/>
</additional_info>
我尝试使用以下脚本,但我得到了undefined
。
var text=" <additional_info>
<Param name="srno" value="B4745" />
<Param name="Device" value="Opn" />
<Param name="Support" value="0" />
<Param name="templatedata" value="Rk1S"/>
</additional_info>";
if (window.DOMParser) {
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
} else {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(text);
}
var txt;
var x = xmlDoc.getElementsByTagName("additional_info");
alert(x[0].value);
var y=x.getAttribute("Param name")
txt = y.nodeValue;
alert(txt);
答案
你需要的只是querySelector
你想要的元素,可以用Param[name="templatedata"]
选择。使用模板文字而不是双引号来定义多行的字符串,并使用getAttribute('value')
而不是.value
,因为.value
仅适用于类似输入的元素:
var text = `<additional_info>
<Param name="srno" value="B4745" />
<Param name="Device" value="Opn" />
<Param name="Support" value="0" />
<Param name="templatedata" value="Rk1S"/>
</additional_info>`;
let parser;
let xmlDoc;
if (window.DOMParser) {
parser = new DOMParser();
xmlDoc = parser.parseFromString(text, "text/xml");
} else {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(text);
}
const param = xmlDoc.querySelector('Param[name="templatedata"]');
console.log(param.getAttribute('value'));
以上是关于在Javascript中使用DOM解析器获取子节点属性值的主要内容,如果未能解决你的问题,请参考以下文章