gpt4 book ai didi

xml - 我可以使用 Scala 的内置 xml 处理程序忽略无效的 XML 字符吗?

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

我有一个 xml 文件(来自联邦政府的 data.gov),我试图用 scala 的 xml 处理程序读取它。

val loadnode = scala.xml.XML.loadFile(filename) 

显然,存在无效的 xml 字符。是否可以选择忽略无效字符?还是我唯一的选择是先清理它?

org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x12) was found in the element content of the document.

Ruby 的 nokogiri 能够用无效字符解析它。

最佳答案

扩展@huynhjl 的回答:如果您有多字节字符,例如在 UTF-8 编码的文本中,InputStream 过滤器是危险的。相反,使用面向字符的过滤器:FilterReader。或者如果文件足够小,加载到 String 并替换那里的字符。

scala> val origXml = "<?xml version='1.1'?><root>\u0012</root>"                                          
origXml: java.lang.String = <?xml version='1.1'?><root></root>

scala> val cleanXml = xml flatMap {
case x if Character.isISOControl(x) => "&#x" + Integer.toHexString(x) + ";"
case x => Seq(x)
}
cleanXml: String = <?xml version='1.1'?><root>&#x12;</root>

scala> scala.xml.XML.loadString(cleanXml)
res14: scala.xml.Elem = <root></root>

关于xml - 我可以使用 Scala 的内置 xml 处理程序忽略无效的 XML 字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413939/

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