Java OpenDocument格式:parse&;按行拆分文本

Java OpenDocument格式:parse&;按行拆分文本,java,groovy,xml-parsing,libreoffice,opendocument,Java,Groovy,Xml Parsing,Libreoffice,Opendocument,我正在解析(使用Groovy)从LibreOffice.odt(Writer)文件获得的content.xml 我想确保我把文件中的所有文本都胡佛掉了,用换行符分开 在Java的org.w3c.dom.Node(或Groovy的Groovy.util.Node)中,有一种方法可以提取任何节点下的所有文本(dom.Node.getTextContent/util.Node.text)。对于最高节点,这将打印文件中的所有文本,但会忽略换行符 这让我想到,我将不得不在结构中行走(深度优先),识别单独的

我正在解析(使用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”(尽管对于一些复杂的嵌入式结构,我相信它们可以…)。但清楚地检查给定“p”下的任何
跨度将生成您已经从其祖先“p”节点获得的文本

但是“p”和“h”是我需要查看的唯一QName吗?我应该如何处理嵌入结构的可能性(例如,包含一些文本的图形)

是否有某种技术可以让我一个节点一个节点地获得所有文本的综合列表,从而确保没有遗漏任何文本,也没有重复的文本


如果做不到这一点,OpenDocument格式是否有某些方面可以让我解决这个问题?有趣的是,中“content.xml”下的示例仅使用了这两个QName,“p”和“h”。

Tim Yates的评论似乎是最好的方法

除非有人反对,否则我不会删除这个问题,因为似乎没有其他类似的问题

从最初的实验来看,似乎
org.odftoolkit.simple.TextDocument.getParagraphIterator()
将遍历所有段落,包括“h”QNames(=标题),也包括空段落。这是个好兆头


请记住,这些“段落”实际上可能是多行段落:在编写器文件中,“段落标记”和“换行符”之间存在差异。但是,解决方法非常简单:只需将段落
getTextContent()
/(
textContent
Groovy人的属性)
String
拆分为换行符…

您是否考虑过使用Apache提供的API读取文件,而不是尝试创建自己的文件?这个类看起来很有趣,但从未尝试过,但可能会节省您争论xmlHa的时间。。。肯定是要走的路。(再次)谢谢。耶!祈祷:-你敢肯定你不想把你的评论变成一个答案吗?然后我会删除我的…不,我的更多的是一个暗示