0

我已经四处寻找了一段时间,发现了一些接近但不是我正在寻找的东西。

我正在尝试使用这个 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>标签

任何人都可以帮忙吗?

4

2 回答 2

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 无效,但是解析将失败。

小提琴

于 2013-05-21T21:35:12.373 回答
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');

在这个例子中,url 将返回http://stackoverflow.com,doc 将返回New Document

于 2013-05-21T21:35:19.503 回答