【发布时间】:2015-07-29 13:37:06
【问题描述】:
如何基于 XSD 定义在 SAX 上实施策略模式?
like:
if xsd = V1 use V1Parser
if xsd = V2 use V2Parser
if xsd = V3 use V3Parser
else error
问题是我必须查看 XML 才能知道定义了哪个 XSD,但是我无法再更改解析器(我不会再开始了,因为 xsd 不是在开始时定义的/不好来自 ERM 系统的格式化 XML)。
你知道解决方法吗?
【问题讨论】:
-
您的 VxParsers 是 SAX ContentHandler 吗?
-
不完全是,它们是 DefaultHandler。
-
您必须深入了解 XML 以决定采用哪个解析器? XSD 是否在根元素中定义?
-
不,每个子树都有自己的 XSD。
-
所以当你进入一个带有特定 XSD 的子树时,你想为那个子树使用一个特定的 DefaultHandler?
标签: java xml xsd sax strategy-pattern