Javascript中的迭代/循环相同的标记XML?
问题描述:
我有一个var
与底部显示的内容。这个想法是遍历这个var
,并获得<module>
和标签之间的内容并将其插入array var
。Javascript中的迭代/循环相同的标记XML?
<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);
够简单了!谢谢。 –