gpt4 book ai didi

xml - Scala XML 拉解析器和位置

转载 作者:数据小太阳 更新时间:2023-10-29 02:32:15 26 4
gpt4 key购买 nike

有人要求我编写一个实用程序来在大量 XML 文件中搜索缺少属性的元素。负责部门不能只在 DTD 中强制使用该属性,因为它会破坏数百个文件。他们想在几天/几周内手动编辑它们。

我正在用 Scala 2.8.1 编写一个小型命令行工具。我将使用“拉”解析器,这样我就可以保持我的代码函数式编程的纯净并以多线程方式运行它。

我需要 XML 事件的位置。 Java 6 中提供的 API (javax.xml.stream.XMLStreamReader) 有一个返回事件行号的方法 (getLocation())。我可以使用它来编写消息,通知用户到哪里寻找缺少的属性。

我更愿意在 scala.xml.pull.XMLEventReader 中使用拉式解析器,但它似乎不提供位置信息。

我错过了什么吗?它在 Scala API 的其他地方吗?

最佳答案

据我所知,这不是由 XMLEventReader 提供的接口(interface)。

它依赖于io.Source并且可以提供对该位置的访问但不提供。我看不到解决这个问题的简单方法,因为可以访问该位置的对象是私有(private)的。

您可能想制作自己的 XMLEventReader 副本产生自定义 XMLEvent与位置。修改的方法是 override def elemStart它可以访问该位置并可以生成另一个 EvPos(line:Int, column:Int)在每个 EvElemStart 之后.

您也可以考虑使用 2.9.RC1,因为某些与性能相关的错误已得到修复。

关于xml - Scala XML 拉解析器和位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5715453/

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