我有一个 XML 文档,其中一些节点有 . 以他们的名义:

<com.site.blah>
   <id>asdkjasd</id>
   <com.site.testing>
       <name>test</name>
    </com.site.testing>
</com.site.blah>

如果我尝试 @doc.search("/*/id").first.xpath, ,它返回 /com.site.blah/id, ,但如果我这样做: @doc.search("/com.site.blah/id").first.inspect 它返回 nil.

我希望能够进行 XPath 查询来选择下面的名称 com.site.testing, ,但它一直拒绝我的查询。

有任何想法吗?

(如果有影响的话我正在使用 hpricot)

有帮助吗?

解决方案

您的 XPath 库已损坏。XPath 名称测试是 QName (http://www.w3.org/TR/xpath/#NT-NameTest),在遵循 EBNF 的兔子洞之后,其中包括句点(http://www.w3.org/TR/REC-xml/#NT-NameChar)。向开发人员报告错误。

作为解决方法,注释中提到的转义机制都不是 XPath 的一部分,但您可以尝试使用谓词来检查元素名称,如下所示:

/*[name(.) = 'com.site.blah']/id
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top