【问题标题】:Retrieving a specific XML node, jQuery检索特定的 XML 节点,jQuery
【发布时间】:2012-02-06 23:15:33
【问题描述】:

在 jQuery 中处理 XML 相对较新。我正在尝试根据其父元素中的属性从 XML 文件中检索特定节点。这是 XML(短版):

     <?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'
    );
});

【问题讨论】:

    标签: jquery xml


    【解决方案1】:

    假设 $xml 是您的 XML 包装在一个 jQuery 对象中:

    $xml.find('member[row="2"]')
    

    将选择您要操作的行。

    $xml.find('member[row="2"] firstName').text(); //returns Jane
    

    Here 是这种工作的一个例子。 XML 选择器的工作方式类似于从 DOM 中选择元素;你所知道的大部分都可以在这里应用。

    【讨论】:

    • 看起来这是在正确的轨道上,但我似乎无法使用上面的代码获取文本。当我尝试在警报消息中使用它时,它返回“未定义” - var test = $xml.find('member[row="2"].attr('firstName');
    • 这个解决方案非常适合我,感谢您的帮助 :)
    【解决方案2】:

    使用$.parseXML解析xml

    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);
    

    DEMO

    【讨论】:

    • 好的,这在您的示例中非常有效,但是当我尝试引用外部文件 (member_xml.php) 时,它显示 XML 无效?我错过了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多