我正在解析(使用 Groovy)从 LibreOffice .odt (Writer) 文件中获得的 content.xml。
我想确保将文件中的所有文本都隐藏起来,并按换行符分割。
在 Java org.w3c.dom.Node
(或 Groovy groovy.util.Node
)中,有一种方法可以获取任何节点(dom.Node.getTextContent
/ util.Node.text
)下的所有文本。对于最高节点,这将打印文件中的所有文本,但它会忽略换行符。
这让我假设我必须(深度优先)穿过结构,识别单独的线条。
通过这样的结构解析,我发现节点名称的“本地部分”往往有文本是“p”(段落)和“h”(标题)。
我还假设“p”或“h”不能嵌套另一个“p”或“h”(尽管有一些复杂的嵌入式结构,我相信它们可以......)。但清楚地检查spans
给定“p”下的任何内容将生成您已经从其祖先“p”节点获得的文本。
但是“p”和“h”是我需要查看的唯一 QName 吗?我应该如何处理嵌入结构的可能性(例如包含一些文本的图形)。
是否有一些技术可以让我获得所有文本的全面列表,逐个节点,确保没有文本被遗漏并且没有重复?
如果做不到这一点,OpenDocument 格式的某些方面是否可以让我解决这个问题?有趣的是,Wikip上“content.xml”下的简要概述中的示例只使用了这两个 QName,“p”和“h”。