Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jQuery从xml中查找/提取数据_Jquery_Xml - Fatal编程技术网

如何使用jQuery从xml中查找/提取数据

如何使用jQuery从xml中查找/提取数据,jquery,xml,Jquery,Xml,我试图从下面的xml中提取StateLongName和StateShortName值 我知道使用jQuery必须有一种简单优雅的方法来实现这一点 <NewDataSet> <Table> <StateLongName>Alabama</StateLongName> <StateShortName>AL</StateShortName> </Table> <Table>

我试图从下面的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>
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>