【发布时间】:2015-09-17 10:45:46
【问题描述】:
我有一个如下所示的 XML 文件,我需要使用 Java 生成一个 .txt 文件,其中包含标记中的纯文本,每一个都在一行中。
我读到我可以使用 SAX 来访问不同的标签,但是在这种情况下,在下面的示例中可能有随机标签,这是无效的。
执行此操作的最佳方法是什么?也许是正则表达式?
<?xml version="1.0" encoding="utf-8"?>
[...]
<source>
<g id="_0">
<g id="_1">First valid sentence</g>
</g>
</source>
<source>Another valid string</source>
输出的 results.txt 应该是这样的:
First valid sentence
Another valid string
【问题讨论】:
-
已编辑。抱歉,我还没有阅读随机标签部分。我会将整个文档视为一个字符串,并首先尝试提取“随机”标签标识符。
-
使用 SAX,您只需等待开始标记,打开标志,然后收集您看到的所有字符,直到看到结束标记。只需忽略内部标签的开始和结束事件。
-
@JPMoresmau 所以在你的解决方案中我仍然需要使用正则表达式来丢弃
标签(上面的例子),如果存在的话。正确的?正如 Slow Trout 所建议的那样,将整个 XML 视为一个字符串并应用正则表达式不是更容易吗? -
嗯,不,SAX 事件会告诉您“我开始源标签”,这就是您开始收集文本的提示。然后你会得到一个 SAX 事件,告诉你“我正在开始一个 g 标签”,这不会改变任何事情。然后当你得到一些你收集的文本时,直到你看到事件“关闭标签源”,你停止收集文本。
标签: java xml xml-parsing sax