如何使用jQuery从xml中查找/提取数据
我试图从下面的xml中提取StateLongName和StateShortName值 我知道使用jQuery必须有一种简单优雅的方法来实现这一点如何使用jQuery从xml中查找/提取数据,jquery,xml,Jquery,Xml,我试图从下面的xml中提取StateLongName和StateShortName值 我知道使用jQuery必须有一种简单优雅的方法来实现这一点 <NewDataSet> <Table> <StateLongName>Alabama</StateLongName> <StateShortName>AL</StateShortName> </Table> <Table>
<NewDataSet>
<Table>
<StateLongName>Alabama</StateLongName>
<StateShortName>AL</StateShortName>
</Table>
<Table>
<StateLongName>Alaska</StateLongName>
<StateShortName>AK</StateShortName>
</Table>
...elments removed for brevity
</NewDataSet>
Try#1找不到任何东西,也从不进去加载stateName和stateCode变量
试试看
Try#2确实可以找到匹配项,但是stateName和stateCode没有定义
试试看
试试看,3种方法都有效,但必须有更好的方法。请开导我
谢谢你抽出时间 它区分大小写,请像这样使用
“Table”
:
$(xml).find("Table").each(function() {
var stateName = $(this).find("StateLongName").text();
var stateCode = $(this).find("StateShortName").text();
});
更新:很抱歉,这一条有点让人困惑,不要使用
,它将其视为html创建
,然后事情就变得陌生了:)如果您将其更改为与其他任何内容相邻,它就会工作,下面是一个将其更改为
的示例:
这是一个完整的测试页面:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
var xml="<NewDataSet><Tabl><stateLongName>Alabama</stateLongName><stateShortName>AL</StateShortName></Tabl><Tabl><StateLongName>Alaska</StateLongName><StateShortName>AK</StateShortName></Tabl></NewDataSet>";
$(xml).find("Tabl").each(function() {
var stateName = $(this).find("StateLongName").text();
var stateCode = $(this).find("StateShortName").text();
alert("State: " + stateName + " Code: " + stateCode);
});
</script>
</head>
<body>
</body>
</html>
var xml=“Alabamalalaskaak”;
$(xml).find(“Tabl”).each(函数(){
var stateName=$(this.find(“StateLongName”).text();
var stateCode=$(this).find(“StateShortName”).text();
警报(“状态:“+stateName+”代码:“+stateCode”);
});
$.ajax({
键入:“获取”,
url:“labels.xml”,
数据类型:“xml”,
成功:函数(xml){
$(xml).find('label').each(function(){
var id_text=$(this.attr('id'))
var name_text=$(this).find('name').text()
$(“”)
.html(name_text+'('+id_text+'))
.appendTo(“#更新目标ol”);
});//关闭每个(
}
});//关闭$.ajax(
此示例的xml:
<?xml version="1.0" encoding="iso-8859-1"?>
<labels>
<label id='ep' added="2003-06-10">
<name>Ezra Pound</name>
<address>
<street>45 Usura Place</street>
<city>Hailey</city>
<province>ID</province>
</address>
</label>
<label id='tse' added="2003-06-20">
<name>Thomas Eliot</name>
<address>
<street>3 Prufrock Lane</street>
<city>Stamford</city>
<province>CT</province>
</address>
</label>
<label id="lh" added="2004-11-01">
<name>Langston Hughes</name>
<address>
<street>10 Bridge Tunnel</street>
<city>Harlem</city>
<province>NY</province>
</address>
</label>
<label id="co" added="2004-11-15">
<name>Christopher Okigbo</name>
<address>
<street>7 Heaven's Gate</street>
<city>Idoto</city>
<province>Anambra</province>
</address>
</label>
</labels>
埃兹拉·庞德
乌苏拉广场45号
海利
身份证件
托马斯·艾略特
普鲁弗洛克巷3号
斯坦福德
计算机断层扫描
兰斯顿休斯
10桥隧
哈莱姆
纽约
克里斯托弗·奥基博
7天堂之门
伊多托
阿南布拉
忽略我的回答-我认为你的问题更一般!我喜欢在多次使用该值时定义var$this=$(this)
。感谢Nick的快速响应。不幸的是,更改大小写仍然没有找到任何匹配项。似乎大小写敏感度不适用于.find()方法。的任何大小写版本$(xml).find(“statelongname”)将匹配,而$(xml).find(“table”)的任何字符大小写版本将不匹配。此行为特定于浏览器吗?Nick的原始示例在Chrome上对我有效。@Anurag-之所以有效,是因为我将xml更改为不包含
,而是包含
,这似乎在文档片段中把事情搞得一团糟。
$(xml).find("Table").each(function() {
var stateName = $(this).find("StateLongName").text();
var stateCode = $(this).find("StateShortName").text();
});
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
var xml="<NewDataSet><Tabl><stateLongName>Alabama</stateLongName><stateShortName>AL</StateShortName></Tabl><Tabl><StateLongName>Alaska</StateLongName><StateShortName>AK</StateShortName></Tabl></NewDataSet>";
$(xml).find("Tabl").each(function() {
var stateName = $(this).find("StateLongName").text();
var stateCode = $(this).find("StateShortName").text();
alert("State: " + stateName + " Code: " + stateCode);
});
</script>
</head>
<body>
</body>
</html>
$.ajax({
type: "GET",
url: "labels.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('label').each(function(){
var id_text = $(this).attr('id')
var name_text = $(this).find('name').text()
$('<li></li>')
.html(name_text + ' (' + id_text + ')')
.appendTo('#update-target ol');
}); //close each(
}
}); //close $.ajax(
<?xml version="1.0" encoding="iso-8859-1"?>
<labels>
<label id='ep' added="2003-06-10">
<name>Ezra Pound</name>
<address>
<street>45 Usura Place</street>
<city>Hailey</city>
<province>ID</province>
</address>
</label>
<label id='tse' added="2003-06-20">
<name>Thomas Eliot</name>
<address>
<street>3 Prufrock Lane</street>
<city>Stamford</city>
<province>CT</province>
</address>
</label>
<label id="lh" added="2004-11-01">
<name>Langston Hughes</name>
<address>
<street>10 Bridge Tunnel</street>
<city>Harlem</city>
<province>NY</province>
</address>
</label>
<label id="co" added="2004-11-15">
<name>Christopher Okigbo</name>
<address>
<street>7 Heaven's Gate</street>
<city>Idoto</city>
<province>Anambra</province>
</address>
</label>
</labels>