【问题标题】:How do I use jQuery to parse XML as I have here我如何使用 jQuery 来解析 XML,就像我在这里一样
【发布时间】:2011-01-12 01:52:02
【问题描述】:

这个(或它的一些变体)由我的 PHP 脚本输出 请注意,一些标签在不同的上下文中使用相同的名称:

<conversations>
  <status>1</status>
  <conversation>
    <open>0</open>
    <status>1</status>
    <priority>1</priority>
  </conversation>
  <conversation>
    <open>1</open>
    <status>0</status>
    <priority>0</priority>
  </conversation>
</conversations>

<messages>
  <status>1</status>
  <message>
    <msgID>165</msgID>
    <userID>16></userID>
    <msg>How do I parse this?</msg>
  </message>
</messages>

首先,我需要循环并为每个对话显示一个按钮。然后我需要循环显示所选对话的所有新消息。我可以自己弄清楚逻辑。我只是不知道如何解析(爬上)XML。感谢您的帮助!

编辑:如果我说 $("status",xml).text() 我怎么知道哪个 标签被引用?我需要区分

【问题讨论】:

    标签: jquery xml


    【解决方案1】:
    • .filter() 过滤顶层节点,
    • .children() 带有一个可选选择器,用于获取顶层对象的一组直接子代
    • .find() 带有一个选择器,用于获取位于当前顶层节点之下任意级别的一组节点
    • .each() 迭代当前顶层的那些

    示例: http://jsfiddle.net/MTPdw/1/

    var $xml = $(xml);
    
    var conversations = $xml.filter('conversations');
    
    conversations.children('conversation').each(function() {
        alert($(this).find('status').text());
    });
    

    当你在做的时候:

    $("status",xml).text()
    

    ...它被转换成这个:

    $(xml).find("status").text();
    

    因为顶层的节点是&lt;conversations&gt;&lt;messages&gt;,所以它正在搜索属于其中任何一个的后代的所有&lt;status&gt; 元素。 .text() 然后返回了它们的累积文本内容。

    【讨论】:

    • 谢谢! 'xml'前面应该有一个$符号吗?我以为 PHP 用 $ 来定义变量,而 jQuery 没有。
    • @Michael:不。这是 jQuery 开发人员常用的约定来表示引用 jQuery 对象的变量。我把它放在那里是出于习惯。完全可选。 Javascript 没有这样的要求。
    • 所以当我写 $("status",xml).text() 它真的没有意义吗?还是只抢第一个?
    • @Michael:当你这样做时,你得到了一个带有 all 嵌套 &lt;status&gt; 元素的 jQuery 对象。将xml 字符串作为第二个参数(上下文参数)与$(xml).find("status") 的结果完全相同。您可以使用$("status",xml).each(function(){ alert($(this).text()); }); 让它分别提醒每个人的文本。
    • 我已经浏览了至少 12 个不同的堆栈溢出页面,除了 find() 来获取 xml 元素之外,没有提到其他的东西。感谢您列出其他人。 jQuery API 的示例过于简单,无法使用。谢谢@user113716。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 2014-07-13
    • 2021-07-27
    • 1970-01-01
    相关资源
    最近更新 更多