nokogiri中XPath的可选语法,解析ODF



我有一个非常简单的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属性值对于整个文档将是唯一的,因此未引用不会成为问题。

"有没有其他方法可以引用文档的部分?例如,只使用text:name属性?"

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

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

"有没有办法忽略命名空间?"

可以使用local-name()来忽略命名空间。例如,按text:name属性值筛选元素,同时忽略属性的命名空间:

.//*[@*[local-name()='name' and .='categorylevel1']]

相关内容

  • 没有找到相关文章

最新更新