如何解析XML,以及如何使用jQuery导航结果?这是我的示例XML:
<Pages>
<Page Name="test">
<controls>
<test>this is a test.</test>
</controls>
</Page>
<Page Name = "User">
<controls>
<name>Sunil</name>
</controls>
</Page>
</Pages>
我想通过此路径查找节点Pages
- &gt; Page Name
- &gt; controls
- &gt; test
?
答案 0 :(得分:39)
有$.parseXML
功能:http://api.jquery.com/jQuery.parseXML/
你可以像这样使用它:
var xml = $.parseXML(yourfile.xml),
$xml = $( xml ),
$test = $xml.find('test');
console.log($test.text());
如果你真的想要一个对象,你需要一个插件。例如,这个插件会将您的XML转换为JSON:http://www.fyneworks.com/jquery/xml-to-json/
答案 1 :(得分:16)
您可以使用.parseXML
var xml='<Pages>
<Page Name="test">
<controls>
<test>this is a test.</test>
</controls>
</Page>
<page Name = "User">
<controls>
<name>Sunil</name>
</controls>
</page>
</Pages>';
jquery的
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc );
$($xml).each(function(){
alert($(this).find("Page[Name]>controls>name").text());
});
答案 2 :(得分:12)
我假设您正在从外部文件加载XML。使用$.ajax()
,实际上非常简单:
$.ajax({
url: 'xmlfile.xml',
dataType: 'xml',
success: function(data){
// Extract relevant data from XML
var xml_node = $('Pages',data);
console.log( xml_node.find('Page[Name="test"] > controls > test').text() );
},
error: function(data){
console.log('Error loading XML data');
}
});
此外,您应该对XML节点命名保持一致。您同时拥有小写和大写的节点名称(<Page>
与<page>
),当您尝试使用XML树选择器时,这可能会造成混淆。
答案 3 :(得分:9)
$xml = $( $.parseXML( xml ) );
$xml.find("<<your_xml_tag_name>>").each(function(index,elem){
// elem = found XML element
});
答案 4 :(得分:2)
看一下jQuery的.parseXML()
[docs]:
var $xml = $(jQuery.parseXML(xml));
var $test = $xml.find('Page[Name="test"] > controls > test');
答案 5 :(得分:1)
我采用了jQuery的.parseXML()
的方式,然而发现'Page[Name="test"] > controls > test'
的XML路径语法不起作用(如果有人知道为什么请大声喊出来!)。
相反,我将单个.find()
结果链接在一起,形成如下:
$xmlDoc.find('Page[Name="test"]')
.find('contols')
.find('test')
结果与我期望的一次发现相同。
答案 6 :(得分:0)
谷歌搜索结果http://think2loud.com/224-reading-xml-with-jquery/中弹出的第一件事 在没有任何插件的情况下,没有简单的方法可以在jQuery中访问xml结构(就像你描述的 Pages-&gt; pagename-&gt; controls-&gt; test )。