我有一个经典的XML验证问题 - 我需要解析传入的XML(来自其他应用程序 - 不使用正确的XML格式化程序) 在数据中嵌入了破碎的标签和XML特殊字符(但没有使用CDData标签来包装)
我使用简单的XStream解析器来解组传入的流,因为它是简单的序列化而不是严格的解析器。对于特殊字符,它会抛出ConverterException并且不会解析该文件。
我想知道是否有任何其他解析器可用于解析无效的XML文件(特殊字符等) 我们无法控制将作为输入流发送的内容以及作为审计应用程序的一部分,需要尽可能多地从传入文件中读取良好记录。
是否有更好的解析选项可用,还是需要编写Custom Parser来解析这些文件? 我使用Spring Batch进行批处理,使用XStream(1.x)来解析XML文件。
AS XSD验证失败,我想知道它是否值得探索其他解析器/自定义解析器选项..
寻找关于XML验证的专家意见..
答案 0 :(得分:2)
我知道你试图充分利用凌乱的输入。不幸的是,由于似乎没有明确说明该输入的格式,您实际上是靠自己。一种方法可能是首先将输入文件转换为有效的XML,这基本上是通过编写自己的解析器来完成的。在Java中,您可以通过使用您自己的专用代码读取和解析文件并输出标准Java XML接口(SAX,DOM等)来实现此目的。但是,根据您的知识,使用专门用于文本解析的其他语言可能会更快。
我的经验是,这里唯一的真正的长期解决方案是强制数据供应商提供有效的XML。这样做的原因是,虽然您可以尽力从无效数据中提取有效数据,但总是存在您的解释错误的风险。半有效数据通常比没有数据更差。恕我直言,最好在供应商处负责提供正确的数据。