Javascript中的迭代/循环相同的标记XML?

Javascript中的迭代/循环相同的标记XML?

问题描述:

我有一个var与底部显示的内容。这个想法是遍历这个var,并获得<module>和标签之间的内容并将其插入array varJavascript中的迭代/循环相同的标记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元素

  1. 创建root为使其可解析的元素(任何与此有关的名称)。

  2. 循环遍历模块并根据需要获取数组。

请参见下面的演示:

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

+2

够简单了!谢谢。 –