如何将XML节点和内容动态加载到变量中
How to load XML nodes and content into variables dynamically
我有一个很长的XML列表,分成几个部分。对于每个页面,它根据类别节点(list_node)从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 15, 2015</date>
</media_item>
(XML有更多的节点,不同的类别都由前面代码中的"list_node"调用指定)
$.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();
因此,对于每个节点,我只想让它自动执行,而不是"var title = $(this).find('title').text();"
如果所有节点都是简单的文本节点,则可以遍历children()
并使用tagName
的属性名创建对象数组
$.get('data.xml', function (xml) {
var results = $(xml).find('media_item').map(function () {
var row = {}
$(this).children().each(function () {
row[this.tagName] = $(this).text();
});
return row;
}).get();
console.log(results);
}, 'xml');
这也可以很容易地用于包含属性。
上面的代码将显示的xml转换为:[
{
"title": "temporary title",
"key": "652843722",
"path": "/states/CA",
"filename": "climate-pollution-harmful.html",
"link": "http://a-url-goes-here.com",
"blank": "yes",
"author": "",
"date": "August 15, 2015"
}
]
演示相关文章:
- UIWebview赢得't通过基本身份验证加载动态加载的资源(通过jQuery mobile)
- 我们可以加载动态角度对话框吗
- 使用JQuery在遗留html中加载动态AngularJS
- 谷歌地图在angularjs中懒惰加载动态地理坐标更新
- 正在加载动态日历以在一个月的正确日期开始
- 从服务器和/或客户端加载动态元素的典型技术是什么
- 如何加载动态更改的css文件
- jQuery 时间选取器未加载动态文本字段
- 如何在Highslide中加载动态生成的iframe
- 有没有办法避免角加载动态构建页面时的抖动效应
- 加载动态添加的输入字段
- 用于加载动态 JSON 数据的 JQuery 移动事件
- 手控表未加载动态创建的列标题
- 如何在 ag-grid 中从 http 调用加载动态列和行(列和记录都应该是动态的)
- Jquery 在 Firefox 中的自定义对象参数(动态导航加载动态内容)
- 延迟加载动态驱动器内容选项卡
- Angular JS ui-router - 加载动态视图和动态控制器
- 防止在引导选项卡中加载动态连续网络两次
- 使用 nodejs 加载动态 html
- 如何在 XSLT 中加载动态内容时创建函数