【问题标题】:XPath and wildcard in AJAXAJAX 中的 XPath 和通配符
【发布时间】:2014-07-12 12:31:54
【问题描述】:

知道为什么 objProperties,一个带有通配符的 xpath,在... ...

function getXMLServerObject (httpType, cmd, isAsync) {
    var object = new Array();
    $.ajax({
      type: httpType,
      url: cmd,
      async: isAsync,
      dataType: "xml",
      success: function (xml) {
        var error = $(xml).find("Error");
        if (error == null) {
            object["__error"] = error.text();
            return object;
        }
        var objProperties = $(xml).find("Data\\Record\\*");

... xml 的长度为零:

...

<Data>
    <Record>
        <MailFrequency>30</MailFrequency>
        <Tracking>-1</Tracking>
    </Record>
</Data>

在单个节点上查找返回正确的结果

【问题讨论】:

  • 这些答案对您有帮助吗?如果没有,你自己解决了吗?如果是,请接受一个。

标签: javascript ajax xml xpath wildcard


【解决方案1】:

jQuery 不是为使用 XPath 而设计的,因为它是选择器。

一旦将 xml 包装在 jQuery 对象中,就可以像 html 标记一样考虑标签,并使用完全相同的 jQuery 选择器和方法方法

假设你有多个&lt;Record&gt;尝试:

var $records = $(xml).find("Record");/* create collection of all Record tags */

$records.each(function(){
  var $children=$(this).children();
   /* or to access specific elements*/
   var mailFreq= $(this).find('MailFrequency').text();
})

【讨论】:

  • 成功:function(xml) { ... var $records = $(xml).find("Record"); if (($records).size() > 1) ... $records.each(function(){ var $children=$(this).children(); $children.each(function(){ var key = $(this).prop("tagName"); var value = $(this).text(); object[key] = value; }); }); },
  • 是的!尽管我似乎遵守规则,但不知道如何格式化评论(这是我的第一个 stackoverflow 帖子)。
【解决方案2】:

看线

var objProperties = $(xml).find("Data\\Record\\*");

我假设您的意思是 "Data\\Record\\*" 是您的 XPath 表达式。我不知道任何接受\ 作为分隔符的XPath 引擎。你通常会使用/"Data/Record/*"

除此之外,您实际上可以使用 jQuery 选择器实现相同的功能,它是 CSS3 选择器的超集。请记住,根节点是 Data$.find 仅适用于子节点:

var objProperties = $(xml).find("Record > *");

这不是每条记录中元素的正确对象。如果你想使用charlietfl's approach,需要稍作调整。

【讨论】:

  • 我都试过了。没有工作,但我得到错误 / 然后我看到 jqWidgets 使用 \ 会更好地学习 jQuery,这些是我早期的日子。
  • 是后代,我只是没有复制整个文件,抱歉。
猜你喜欢
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 2011-08-04
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
相关资源
最近更新 更多