我有一个var
与底部显示的内容。这个想法是迭代这个var
并获取 <module>
之间的内容和</module>
标签并将其插入 array var
。
<module>
<title>Tag1</title>
<multipleChoice>
<option>option 1</option>
</multipleChoice>
</module>
<module>
<title>Tag2</title>
<multipleChoice>
<option>option 1</option>
<option>option 2</option>
</multipleChoice>
</module>
<module>
<title>Tag4</title>
<multipleChoice>
<option>option 1</option>
<option>option 2</option>
</multipleChoice>
</module>
所以这个array var
将保存在[0]
中位置等:
<module>
<title>Tag1</title>
<multipleChoice>
<option>option 1</option>
</multipleChoice>
</module>
到目前为止我所尝试的是获取每个 module tag
以这种方式插入到每个数组位置。我读过xmlDoc Parser
但不确定这是否是执行此操作的最佳方法。
//Get module section xml
var array = [];
var startPos = str.indexOf("<module>");
var endPos = str.indexOf("</module>");
var xmlModule = str.substring(startPos,endPos).trim();
array[0] = xmlModule;
最佳答案
您可以使用 DOMParser
将字符串解析为有效的 DOM 元素
创建一个
root
(任何名称)元素以使其可解析。循环模块并根据需要获取数组。
请参阅下面的演示:
var parser = new DOMParser();
var xml = `<root>
<module>
<title>Tag1</title>
<multipleChoice>
<option>option 1</option>
</multipleChoice>
</module>
<module>
<title>Tag2</title>
<multipleChoice>
<option>option 1</option>
<option>option 2</option>
</multipleChoice>
</module>
<module>
<title>Tag4</title>
<multipleChoice>
<option>option 1</option>
<option>option 2</option>
</multipleChoice>
</module>
</root>`;
var xmlDoc = parser.parseFromString(xml,"text/xml");
var result = Array.prototype.map.call(
xmlDoc.querySelectorAll('module'), function(e){
return e.outerHTML.replace(/\s/g, '');
});
console.log(result);
关于javascript - 在 Javascript 中迭代 XML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45639680/