gpt4 book ai didi

java - OpenDocument 格式 : parse & split text by lines

转载 作者:行者123 更新时间:2023-11-30 06:18:23 25 4
gpt4 key购买 nike

我正在解析(使用 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”下的任何span将生成您已经从其祖先“p”节点获得的文本。

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

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

如果失败了,OpenDocument 格式的某些方面是否可以让我解决这个问题?有趣的是 brief overview at Wikip 中的示例在“content.xml”下,仅使用这两个 QName,“p”和“h”。

最佳答案

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

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

从第一个实验来看,org.odftoolkit.simple.TextDocument.getParagraphIterator()将迭代所有段落,包括“h”QNames(=标题),还包括空段落。这是一个好兆头。

请记住,这些“段落”实际上可能是多行段落:在 Writer 文件中,“段落标记”和“换行符”之间是有区别的。然而,解决这个问题的方法非常简单:只需在换行符上拆分 Paragraph getTextContent()/(textContent property for Groovy people) String性格...

关于java - OpenDocument 格式 : parse & split text by lines,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48712800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com