0

我有一个非常简单的 ODF 文档,我想用 nokogiri 解析它。

XML 如下所示:

<office:body>
<office:text>
    <text:sequence-decls>
        ...
    </text:sequence-decls>
    <text:section text:name="categorylevel1" text:style-name="Sect1">
        <text:p text:style-name="Title">[CATEGORY_LEVEL_1_NAME]</text:p>
    </text:section>
</office:text>

目前我正在尝试选择categorylevel1文档的部分。我使用的库会自动生成 XPath 并产生
".//text:section[@text:name='categorylevel1']"
正确的结果。现在问题是库(nokogiri)似乎在 MRI 下接受这条路径,但在 JRuby 下不接受(抛出 SyntaxError)。显然 Java 版本的库不支持命名空间属性。

是否有替代方法来引用文档的部分?例如仅通过使用text:name属性?有没有办法忽略命名空间?该部分的text:name属性值对于整个文档将是唯一的,因此错误引用不会成为问题。

4

1 回答 1

2

“是否有替代方法来引用文档的部分?例如仅使用 text:name 属性?”

您可以通过 using 忽略元素名称*,这样您就可以通过使用 text:name 属性来引用该元素:

.//*[@text:name='categorylevel1']

“有没有办法忽略命名空间?”

您可以使用local-name()忽略命名空间。例如,text:name在忽略属性的命名空间的情况下按属性值过滤元素:

.//*[@*[local-name()='name' and .='categorylevel1']]
于 2014-10-27T11:43:38.177 回答