我有一个非常简单的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']]