【问题标题】:How to validate XML using SAX?如何使用 SAX 验证 XML?
【发布时间】:2010-12-05 15:33:42
【问题描述】:

SAX API-s 如何根据模式/DTD 验证 XML?

我的理解是 SAX API-s 逐块读取 XML 文档,并且不将先前读取的块存储在内存中。所以我不清楚 API 如何在不将其全部保存在内存中的情况下验证文档。 ??

【问题讨论】:

    标签: xml validation sax


    【解决方案1】:

    您无需将整个 XML 树保存在内存中即可对其进行验证。只是那些目前被验证的部分需要在内存中。例如,如果您需要确认像 root/child*/property* 这样的结构,那么实际上只需要检查子父关系,因此我们只需要存储前一个元素来验证这一点。当然,如果结构更复杂,将使用更多的内存来验证复杂的约束。

    【讨论】:

    • 某些类型的 XML 验证需要完整访问文档,如 Wikipedia 上 SAX 页面的缺点中所述:en.wikipedia.org/wiki/Simple_API_for_XML#Drawbacks
    • @Pascal,上面的链接说验证 ID/IDREF 关系只需要将 ID 和 IDREF 的完整列表保存在内存中,而不是完整的文档。
    猜你喜欢
    • 2011-01-01
    • 2015-08-08
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 2013-05-26
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多