我有一个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);