xml - Scala - 如何提取通用文本文件中包含的 XML 文件

标签 xml scala

我有一个非常具体(而且很奇怪)的文本文件,它不是 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> 中提取 XML 文件。直到</tagIWant> 。我知道 Scala 中的 XML 解析器非常强大,但显然这不能解析为 XML。

最佳答案

一种可能有效的方法(用 Java 术语来说,您必须转换为 Scala)是从您自己的 Reader 向解析器提供输入,在 SAX ContentHandler 中使用解析器的输出,并有一个返回-从 ContentHandler 到 Reader 的 channel ,以便一旦报告最外层元素的 endElement 事件,它就会告诉 Reader 停止提供输入。

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

令人遗憾的是,XML 解析器没有一个选项可以在检测到结束标记时停止解析且不会出现错误,但如果有一个解析器具有该选项,我还没有遇到过。您始终可以尝试修改开源解析器!

关于xml - Scala - 如何提取通用文本文件中包含的 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54411096/

相关文章:

java - JAXB 返回 null

xml - 在 grails 中 pretty-print XML 响应的最佳方式

scala - Spark流从Twitter获取数据并保存到Cassandra

mongodb - 如何在 Scala/ReactiveMongo 中映射两个 `future` 结果?

scala - 为什么Spark with Play的 “NoClassDefFoundError: Could not initialize class org.apache.spark.SparkConf$”失败?

C#-Soap如何从响应中获取值

javascript - 如何在 Firefox 中隐藏 HTML 页面中的 XML

java - 处理具有大量数据的 XML 文件

scala - 播放框架 2.5.x : Inject Environment in a Module

scala - 如何使用 spark 在 Hive 中正确加载数据?