代码之家  ›  专栏  ›  技术社区  ›  Casey

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

  •  0
  • Casey  · 技术社区  · 16 年前

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

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

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

    有什么想法?谢谢

    4 回复  |  直到 9 年前
        1
  •  2
  •   kdgregory    16 年前

    对不起,我看不出有什么问题。您正在生成XML,那么验证 XML 当你制作它的时候?

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

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

        2
  •  1
  •   hcayless    16 年前

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

        3
  •  1
  •   Casey    16 年前

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

    感谢您的所有意见。

        4
  •  0
  •   Matthew Flynn    16 年前

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