在 Javascript 中迭代 XML 标记



我有一个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 元素

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

最新更新