首页 > 解决方案 > Scala - 如何提取包含在通用文本文件中的 XML 文件

问题描述

我有一个非常具体(而且很奇怪)的文本文件,它不是 XML 文件,但其中包含一个 XML 文档。它的结构或多或少是这样的:

Some text that I am not interested in...
More text that I don't need.

<tagIWant>
   <...>
   <!-- A large XML document -->
   <...>
</tagIwant>

Some more text...

我想在 Scala 中解析这个文本文件并从<tagIWant>until中提取 XML 文件</tagIWant>。我知道 XML 解析器在 Scala 中非常强大,但显然这不能被解析为 XML。

标签: xmlscala

解决方案


一种可能可行的方法(在 Java 术语中,您必须翻译为 Scala)是从您自己的 Reader 向解析器提供输入,在 SAX ContentHandler 中使用解析器的输出,并从将 ContentHandler 传递给 Reader,以便一旦报告最外层元素的 endElement 事件,它就会告诉 Reader 停止提供输入。

它可能不起作用的原因是解析器可能会缓冲来自阅读器的输入,因此当您的 ContentHandler 告诉阅读器停止时,为时已晚。

遗憾的是,XML 解析器在检测到结束标记时没有停止解析且没有错误的选项,但是如果有带有该选项的解析器,我还没有遇到过。您可以随时尝试修改开源解析器!


推荐阅读