在构建文档时验证java中的xml

时间:2010-01-04 20:38:27

标签: java xml dom sax

我正在努力将excel电子表格转换为需要针对架构进行验证的xml文档。我目前正在使用DOM api构建xml文档,并在最后使用SAX和自定义错误处理程序进行验证。但是,我真的希望能够验证从每个Cell生成的xml,因为我解析了excel文档,这样我就能以更友好的方式指出哪些单元格有问题。

我目前遇到的问题是,在验证简单类型​​的xml之后,一旦将它们构建为复杂类型,所有子节点都会再次进行验证,从而产生冗余错误。

我在SO处发现了this问题,但它使用的是C#和Microsoft API。

思考?谢谢!

4 个答案:

答案 0 :(得分:2)

抱歉,但我没有看到问题。您正在生成XML,那么在生成XML时验证 XML 的重点是什么?

您是否希望验证细胞内容?如果是,则将验证逻辑写入代码。这个验证逻辑可以复制模式,但我怀疑它实际上比模式更详细。

您是否希望验证程序的输出?如果是,则编写单元测试。

答案 1 :(得分:1)

您可以尝试让解析代码触发SAX事件,而不是直接构建DOM。然后你可以注册一个验证SAX ContentHandler来收听它并让你为你构建你的DOM。这应该会在遇到验证时发现错误。

答案 2 :(得分:1)

因此我决定使用的解决方案几乎已完成实现,就是使用XSOM来解析XSD。与解析Excel文件时相比,我在解析的XSD中查找了列名称以取出限制(因为列标题映射到XSD中的简单类型),而不是对限制进行手动验证。我仍在构建树,以便在结束时我可以针对XSD验证整个XML树,因为有一些我无法在Cell级别捕获的东西。

感谢您的所有投入。

答案 3 :(得分:0)

尝试在多个粒度级别构建架构。针对最细粒度的(单元格)测试简单的(单元格),针对不分解复杂类型的不太精细的模式测试复杂的(单元格?)。