xml - 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。
解决方案
一种可能可行的方法(在 Java 术语中,您必须翻译为 Scala)是从您自己的 Reader 向解析器提供输入,在 SAX ContentHandler 中使用解析器的输出,并从将 ContentHandler 传递给 Reader,以便一旦报告最外层元素的 endElement 事件,它就会告诉 Reader 停止提供输入。
它可能不起作用的原因是解析器可能会缓冲来自阅读器的输入,因此当您的 ContentHandler 告诉阅读器停止时,为时已晚。
遗憾的是,XML 解析器在检测到结束标记时没有停止解析且没有错误的选项,但是如果有带有该选项的解析器,我还没有遇到过。您可以随时尝试修改开源解析器!
推荐阅读
- python - 为什么我会收到此错误:“OSError: [WinError 126] The specified module could not be found”?
- javascript - 变换比例对距离有影响吗?
- r - 消除 tidyverse 包中的 ungroup... 消息
- bootstrap-4 - 与 mac 相比,windows 中的字体看起来不同
- amazon-web-services - Amazon TranscribeService 的 URL
- javascript - 从网站上的消息输入部分获取电子邮件
- typescript - 如何为所有 3 个可能的参数定义创建类型并调用期望其中任何一个的函数
- python - 更换?和 | 使用 loc 和 replace 来自 pandas 数据框中列中的字符串对象的符号
- javascript - 有没有办法检查两个字符串是否几乎相同
- r - 重新排列“ggplot2”图例以混合和匹配不同的级别