我正在努力将excel电子表格转换为需要针对架构进行验证的xml文档。我目前正在使用DOM api构建xml文档,并在最后使用SAX和自定义错误处理程序进行验证。但是,我真的希望能够验证从每个Cell生成的xml,因为我解析了excel文档,这样我就能以更友好的方式指出哪些单元格有问题。
我目前遇到的问题是,在验证简单类型的xml之后,一旦将它们构建为复杂类型,所有子节点都会再次进行验证,从而产生冗余错误。
我在SO处发现了this问题,但它使用的是C#和Microsoft API。
思考?谢谢!
答案 0 :(得分:2)
抱歉,但我没有看到问题。您正在生成XML,那么在生成XML时验证 XML 的重点是什么?
您是否希望验证细胞内容?如果是,则将验证逻辑写入代码。这个验证逻辑可以复制模式,但我怀疑它实际上比模式更详细。
您是否希望验证程序的输出?如果是,则编写单元测试。
答案 1 :(得分:1)
您可以尝试让解析代码触发SAX事件,而不是直接构建DOM。然后你可以注册一个验证SAX ContentHandler来收听它并让你为你构建你的DOM。这应该会在遇到验证时发现错误。
答案 2 :(得分:1)
因此我决定使用的解决方案几乎已完成实现,就是使用XSOM来解析XSD。与解析Excel文件时相比,我在解析的XSD中查找了列名称以取出限制(因为列标题映射到XSD中的简单类型),而不是对限制进行手动验证。我仍在构建树,以便在结束时我可以针对XSD验证整个XML树,因为有一些我无法在Cell级别捕获的东西。
感谢您的所有投入。
答案 3 :(得分:0)
尝试在多个粒度级别构建架构。针对最细粒度的(单元格)测试简单的(单元格),针对不分解复杂类型的不太精细的模式测试复杂的(单元格?)。