将XML获取到JavaScript数组中,然后获取值并编写它们

时间:2013-05-21 21:13:24

标签: javascript html xml

我一直在寻找一段时间,并且发现了接近但不是我正在寻找的东西。

我尝试使用这个XML:

<?xml version="1.0"?>
<document name="New Document">
    <url>http://nsc-component.webs.com/Office/Editor/new-doc.html?docname=New+Document&titletype=Title&fontsize=9&fontface=Arial&spacing=1.0&text=&wordcount3=0</url>
</document>

我知道它无效,只是一个例子

并使其成为一个JavaScript数组,如下所示:

<a href="URL-TAG-VALUE">NAME ATTRIBUTE HERE</a>

对于每个<document>代码

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

在处理XML字符串之前,您应该解析它:

if (window.DOMParser) {
    var parser = new DOMParser(),
    xml = parser.parseFromString(your_xml_string_here,"text/xml");
} else { // Internet Explorer
    var xml = new ActiveXObject("Microsoft.XMLDOM");

    xml.async = false;
    xml.loadXML(your_xml_string_here); 
}

然后您可以像访问HTML一样访问XML的DOM:

var arr = [],
    documents = xml.getElementsByTagName('document');

for (var i = 0; i < documents.length; i++) {
    var anchor = document.createElement('a'),
        url    = documents[i].getElementsByTagName('url')[0];


    anchor.href = url.innerText || url.textContent;
    anchor.innerHTML = documents[i].getAttribute('name');

    arr.push(anchor);
}

问题中显示的XML无效,但无法解析。

FIDDLE

答案 1 :(得分:1)

虽然您的XML无效,并且jQuery不是所有内容的解决方案,但它确实有一个名为jQuery.parseXML()的好函数。这是一个可能的解决方案:

//assign the XML string to a variable
var xmlstring = '<?xml version="1.0"?><document name="New Document"><url>http://stackoverflow.com</url></document>';

//use jQuery's XML parsing function and assign it to a variable
var xmldoc = $.parseXML(xmlstring);

//allow jQuery to handle the elements like HTML
var xml = $(xmldoc);

//find <url> and get its contents
var url = xml.find('url').text();

//find <document> and get its name attribute
var doc = xml.find('document').attr('name');

在此示例中,网址将返回http://stackoverflow.com,文档将返回New Document