xpath和css查询的结果不同



我正在探索Nokogiri,并遇到了一个令人困惑的问题,我希望有人的意见。注:我对Ruby也相当陌生,所以我希望做一些非常愚蠢的事情。如果是这样的话,我很抱歉。

我有一个简单的测试,比较XML文档上XPath查询和CSS查询的结果。CSS查询可以工作,但是XPath不行,我不知道为什么。

  should "get same result from Nokogiri using XPath or CSS syntax" do
    xml_source = "<?xml version="1.0" encoding="utf-8"?><accounts xmlns="http://api.esendex.com/ns/"><account id="2b4a326c-41de-4a57-a577-c7d742dc145c" uri="http://api.esendex.com/v1.0/accounts/2b4a326c-41de-4a57-a577-c7d742dc145c"><messagesremaining>100</messagesremaining></account></accounts>"
    ndoc = Nokogiri::XML(xml_source)
    node_value = ndoc.css("accounts account messagesremaining").count
    assert_equal 1, node_value
    node_value = ndoc.xpath("//accounts//account//messagesremaining").count
    assert_equal 1, node_value
  end

第二个assert失败,node_value为0。

你有两个问题。

首先xpath应该是"//accounts/account/messagesremaining"

第二,你有一个默认的命名空间"http://api…"。在执行xpath查询时,需要指定每个元素的名称空间(css查询忽略名称空间)。

对不起,我不知道Nokogiri,但我知道它有一些关于如何在xpath查询中使用名称空间的文档。

相关内容

  • 没有找到相关文章

最新更新