检索特定的XML节点,jQuery
问题描述:
在jQuery中处理XML相对较新。我试图从基于其父元素中的属性的XML文件中检索特定的节点。下面是XML(短版):检索特定的XML节点,jQuery
<?xml version="1.0" encoding="UTF-8"?>
<members>
<member row="1">
<firstName>John</firstName>
<lastName>Smith</lastName>
<status>Active</status>
<title>Member</title>
<memberSince>August, 2011</memberSince>
</member>
<member row="2">
<firstName>Jane</firstName>
<lastName>Smith</lastName>
<status>Active</status>
<title>Member</title>
<memberSince>October, 2011</memberSince>
</member>
</members>
我明白了如何使用jQuery中$.get()
检索XML的基础知识,但似乎无法弄清楚如何检索只,比如说,member row="2"
细节。
任何帮助将不胜感激。
更新
这里是我使用这个简单的测试了jQuery,警报收益为undefined
$(document).ready(function() {
$.get(
'member_xml.php', function($xml) {
$xml = $($xml);
row = 2;
var test = $xml.find('member[row="' + row + '"]').attr('firstName');
alert(test);
},
'xml'
);
});
答
假设$xml
是你的XML包装在一个jQuery对象:
$xml.find('member[row="2"]')
将选择你想要操纵的行。
$xml.find('member[row="2"] firstName').text(); //returns Jane
Here是这个工作的一个例子。 XML选择器的工作原理与从DOM中选择元素类似;大部分你知道的可以在这里应用。
答
解析使用$.parseXML
var xml = '<members>\
<member row="1">\
<firstName>John</firstName>\
<lastName>Smith</lastName>\
<status>Active</status>\
<title>Member</title>\
<memberSince>August, 2011</memberSince>\
</member>\
<member row="2">\
<firstName>Jane</firstName>\
<lastName>Smith</lastName>\
<status>Active</status>\
<title>Member</title>\
<memberSince>October, 2011</memberSince>\
</member>\
</members>';
xmlDoc = $.parseXML(xml);
$xml = $(xmlDoc);
$member = $xml.find('member[row="2"]').find('firstName').text();
console.log($member);
+1
好的,这个效果很好,但是当我尝试引用外部文件(member_xml.php)时,它说无效的XML?我错过了什么? – NightMICU 2012-02-07 00:38:05
看起来这是在正确的轨道上,但我似乎无法获得使用上面的代码文本的XML。当我尝试在alert消息中使用它时,它返回'undefined' - var test = $ xml.find('member [row =“2”]。attr('firstName');' – NightMICU 2012-02-06 23:28:11
这个解决方案对我很好用,感谢您的帮助:) – NightMICU 2012-02-07 02:35:39