【问题标题】:Get Child Nodes attribute value using DOM parser in Javascript在 Javascript 中使用 DOM 解析器获取子节点属性值
【发布时间】:2019-02-18 22:21:57
【问题描述】:

我需要使用JavaScript 获取"templatedata" (RK1S) 的值。

<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);

【问题讨论】:

  • 欢迎来到 SO!检查字符串中的转义字符。您需要单引号、反引号或反斜杠。

标签: javascript dom xml-parsing


【解决方案1】:

您需要的只是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'));

【讨论】:

    猜你喜欢
    • 2021-09-23
    • 1970-01-01
    • 2015-06-16
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多