0

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

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

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

想法?谢谢!

4

4 回答 4

2

对不起,但我没有看到问题。您正在生成 XML,那么在生成 XML 时验证XML的意义何在?

您是否要验证单元格内容?如果是,则将验证逻辑写入您的代码。这个验证逻辑可能会复制模式,但我怀疑它实际上会比模式更详细。

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

于 2010-01-05T13:11:58.743 回答
1

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

于 2010-01-05T01:56:45.637 回答
1

所以我决定采用并且几乎完成实施的解决方案是使用 XSOM 来解析 XSD。与解析 Excel 文件相比,我在解析的 XSD 中查找列名以提取限制(因为列标题映射到 XSD 中的简单类型),而不是针对限制进行手动验证。我仍在构建树,以便最后我可以针对 XSD 验证整个 XML 树,因为有些东西我无法在单元级别捕获。

感谢您的所有意见。

于 2010-01-06T00:55:12.707 回答
0

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

于 2010-01-04T22:22:49.750 回答