我正在尝试从下面的xml中提取StateLongName和StateShortName值.
我知道必须有一个简单优雅的方法来使用jQuery.
<NewDataSet>
<Table>
<StateLongName>Alabama</StateLongName>
<StateShortName>AL</StateShortName>
</Table>
<Table>
<StateLongName>Alaska</StateLongName>
<StateShortName>AK</StateShortName>
</Table>
...elments removed for brevity
</NewDataSet>
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的.
将xml从上面加载到Javascript变量名称xml中.
试试#1
$(xml).find("TABLE").each(function()
{
var stateName = $(this).find("StateLongName").innerText;
var stateCode = $(this).find("StateShortName").innerText;
});
Run Code Online (Sandbox Code Playgroud)
尝试#1找不到任何东西,永远不会进入加载stateName和stateCode变量.
试试#2
$(xml).find("StateLongName").each(function()
{
var stateName = $(this).find("StateLongName").innerText;
var stateCode = $(this).find("StateShortName").innerText;
});
Run Code Online (Sandbox Code Playgroud)
尝试#2找到匹配项,但是stateName和stateCode未定义.
试试#3
$(xml).find("StateLongName").each(function()
{
var stateName = $($(xml).find('StateLongName').parent()[0].innerHTML)[1].data;
var stateCode = $($(xml).find('StateLongName').parent()[0].innerHTML)[5].data;
});
Run Code Online (Sandbox Code Playgroud)
尝试#3工作,但必须有一个更好的方法.请赐教.
谢谢你的时间!
它区分大小写,使用"Table"
如下:
$(xml).find("Table").each(function() {
var stateName = $(this).find("StateLongName").text();
var stateCode = $(this).find("StateShortName").text();
});
Run Code Online (Sandbox Code Playgroud)
更新:对不起,这个有点莫名其妙,不要使用<table>
,它把它视为html创建一个<tbody>
东西从那里变得陌生:)如果你改变它只是邻接其他任何东西,它会工作,这是一个例子用它改为<tabl>
:http://jsfiddle.net/Yvetc/
这是一个完整的裸测试页面:
<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>
Run Code Online (Sandbox Code Playgroud)