如何在XML中选择增量自定义标记

时间:2018-01-30 20:51:20

标签: javascript xml

如何在XML中选择自定义但增量的标记并将其分配给数组?段落标签的数量因页面而异。 JS代码下面不起作用 JS

for (i = 0; i <8; i++) { 
        var para[i] = xmlDoc.getElementsByTagName("paragraph"[i])[0].childNodes[0].nodeValue;   
    }

<paragraph1>Text</paragraph1>
<paragraph2>Text</paragraph2>
<paragraph3>Text</paragraph3>
<paragraph4>Text</paragraph4>

2 个答案:

答案 0 :(得分:1)

XML有许多可用于搜索树的API。下面我正在使用evaluate,以便我可以使用XPath,这是一种用于浏览XML的语言。然后我迭代结果并将值推送到数组。

对于您已经列出的简单任务,这可能有点过分,但XPath提供了许多功能,可以轻松地以XML格式查找内容。

window.onload = function() {
  var parser = new DOMParser();
  var xmlDoc = parser.parseFromString("<root><paragraph1>Test</paragraph1><paragraph2>Test</paragraph2><paragraph3>Test</paragraph3></root>", "application/xml");
  var paragraphs = xmlDoc.evaluate("//*[starts-with(local-name(.), 'paragraph')]", xmlDoc, null, XPathResult.ANY_TYPE, null);
  var paras = [];
  var paragraph = paragraphs.iterateNext();
  while (paragraph) {
    paras.push(paragraph.textContent);
    paragraph = paragraphs.iterateNext();
  }
  console.log(paras);
};

应该注意,上述内容在Internet Explorer中不起作用。请参阅this chart for the supported browsers(也就是说,所有浏览器除了 Internet Explorer)。

答案 1 :(得分:0)

这可行吗

for (i = 0; i <8; i++) {
    var p = xmlDoc.getElementsByTagName("paragraph" + i);
    var paras.push(p[0].childNodes[0].nodeValue);
}