如何在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>
答案 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);
}