我正在使用JavaScript阅读此XML
我怎样才能确保我按照<item>
中的<record>
元素按照xml中存在的相同顺序阅读record[index].find("item:eq(0)").text();
record[index].find("item:eq(1)").text();
元素(所以[Robinson Crusoe]将首先出现[Daniel Defo])
这会有用吗?
<result>
<record>
<item>Robinson Crusoe</item>
<item>Daniel Defo</item>
</record>
<record>
<item>Gullivers Travels</item>
<item>Jonathan Swift</item>
</record>
<record>
<item>Tom Jones</item>
<item>Henry Fielding</item>
</record>
</result>
的xml:
setupWithViewPager()
答案 0 :(得分:2)
只需几行普通Javascript,您就可以将XML数据转换为数组。没有理由为此加载像jQuery这样的大型框架(除非它在其他地方使用)。正如您从示例中看到的那样,数组项的排序与XML中的相同。这个解决方案最适合问题的简单XML结构。
点击显示代码并运行代码段以查看其有效:
var i, xmlStr, items, list = [];
xmlStr = document.getElementById('data').value;
items = (new window.DOMParser())
.parseFromString( xmlStr, 'text/xml')
.getElementsByTagName('item');
for (i = 0; i < items.length; i++) {
list.push(items[i].childNodes[0].nodeValue);
};
document.getElementById('stdout').value = JSON.stringify(list, null, ' ');
textarea {
width: 25em;
height: 6em;
padding: 0.5em;
border: 1px solid black;
}
<div>JS ARRAY</div>
<textarea id="stdout"></textarea>
<div>XML</div>
<textarea id="data">
<result>
<record>
<item>Robinson Crusoe</item>
<item>Daniel Defo</item>
</record>
<record>
<item>Gullivers Travels</item>
<item>Jonathan Swift</item>
</record>
<record>
<item>Tom Jones</item>
<item>Henry Fielding</item>
</record>
</result>
</textarea>
items = ( new window.DOMParser() )
.parseFromString( xmlStr, 'text/xml' )
.getElementsByTagName( 'item' );
for (i = 0; i < items.length; i++)
list.push(items[i].childNodes[0].nodeValue );
答案 1 :(得分:1)
如果你可以使用jquery,那么代码将处理xml输入以提供顺序输出。
inputxml
包含用于处理的xml输入。
$(inputxml).find('record').each(function()
{
var name = $(this).find('item').text();
});
或者如果您只想获得第一个节点,则可以这样做
var result = $(inputxml).find('result record').first()
另一种方式是
$(inputxml).find('result record:eq(0)')