首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenDocument格式:按行解析和拆分文本

OpenDocument格式:按行解析和拆分文本
EN

Stack Overflow用户
提问于 2018-02-10 03:25:43
回答 1查看 166关注 0票数 1

我正在解析(使用Groovy)从LibreOffice .odt (写入器)文件中获得的content.xml。

我想确保我吸住了文件中的所有文本,按换行符拆分。

在Java的org.w3c.dom.Node (或Groovy的groovy.util.Node)中,有一种方法可以提取任意节点(dom.Node.getTextContent/util.Node.text)下的所有文本。对于最高的节点,这将打印文件中的所有文本,但会忽略换行符。

这让我假设我必须(深度优先)遍历结构,识别单独的线条。

通过解析这样的结构,我发现节点名称中倾向于包含文本的“本地部分”是"p“(段落)和"h”(标题)。

我还假设"p“或"h”不能嵌套另一个"p“或"h”(尽管有一些复杂的嵌入结构,我相信它们可以...)。但是清楚地检查给定"p“下的任何spans都将生成您已经从其祖先"p”节点获得的文本。

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

有没有什么技巧可以让我逐个节点地获得所有文本的全面列表,确保没有遗漏任何文本,也没有重复的文本?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-10 04:56:11

蒂姆·耶茨的评论似乎是最好的选择。

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

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

注意:这些“段落”实际上可能是多行段落:在Writer文件中,“段落标记”和“换行符”是不同的。然而,这个问题的解决方案非常简单:只需在换行符上拆分段落getTextContent() /( Groovy people的textContent属性) String ...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48712800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档