Javascript 如何将XML节点和内容动态加载到变量中

Javascript 如何将XML节点和内容动态加载到变量中,javascript,xml,variables,nodes,Javascript,Xml,Variables,Nodes,我有一个很长的XML列表,分为几个部分。对于每个页面,它根据类别节点(列表节点)从XML加载内容。目前,我通过直接引用节点来获取内容,但我不想为每个节点插入一行 有没有办法读取XML,将节点加载到数组中,然后将新变量设置为节点名并加载到内容中?这是我当前的设置: <media_item> <title>temporary title</title> <key>652843722</key> <path>/states/CA&

我有一个很长的XML列表,分为几个部分。对于每个页面,它根据类别节点(列表节点)从XML加载内容。目前,我通过直接引用节点来获取内容,但我不想为每个节点插入一行

有没有办法读取XML,将节点加载到数组中,然后将新变量设置为节点名并加载到内容中?这是我当前的设置:

<media_item>
<title>temporary title</title>
<key>652843722</key>
<path>/states/CA</path>
<filename>climate-pollution-harmful.html</filename>
<link>http://a-url-goes-here.com</link>
<blank>yes</blank>
<author/>
<date>August&nbsp;15,&nbsp;2015</date>
</media_item>

因此,我不希望“var title=$(this).find('title').text();”对于每个节点,我只希望它自动执行该操作。

如果所有节点都只是文本节点,您可以循环
子节点()
,并使用
标记名
作为属性名创建一个对象数组

$.get('data.xml',函数(xml){
var results=$(xml).find('media_item').map(函数(){
变量行={}
$(this).children().each(函数(){
行[this.tagName]=$(this.text();
});
返回行;
}).get();
控制台日志(结果);
}“xml”);
这可以很容易地进行调整以包括属性

上述代码将显示的xml转换为:

[
{
“职务”:“临时职务”,
“密钥”:“652843722”,
“路径”:“/状态/CA”,
“filename:”气候污染有害.html“,
“链接”:http://a-url-goes-here.com",
“空白”:“是”,
“作者”:“作者”,
“日期”:“2015年8月15日”
}
]

如果所有节点都是简单的文本节点,则可以循环使用
子节点()
,并使用
标记名作为属性名创建对象数组

$.get('data.xml',函数(xml){
var results=$(xml).find('media_item').map(函数(){
变量行={}
$(this).children().each(函数(){
行[this.tagName]=$(this.text();
});
返回行;
}).get();
控制台日志(结果);
}“xml”);
这可以很容易地进行调整以包括属性

上述代码将显示的xml转换为:

[
{
“职务”:“临时职务”,
“密钥”:“652843722”,
“路径”:“/状态/CA”,
“filename:”气候污染有害.html“,
“链接”:http://a-url-goes-here.com",
“空白”:“是”,
“作者”:“作者”,
“日期”:“2015年8月15日”
}
]

看看“xml2json”例程,比如jsonmlook,看看“xml2json”例程,比如jsonmlGreat解决方案,这真的帮了我大忙!谢谢@charlietflGreat solution,这真的帮了我大忙!谢谢@charlietfl
 $.ajax({
        type: "GET",
        url: "http://url-of/file.xml,
        dataType: "xml",
        success: function(xml){             
            $(xml).find(list_node).each(function(i){
                var title = $(this).find('title').text();
                var url = $(this).find('link').text();
                var date = $(this).find('date').text();
                var author = $(this).find('author').text();
                var org = $(this).find('org').text();