【发布时间】:2010-12-25 04:33:12
【问题描述】:
假设我有一个 doc.xml 和相应的 doc.xsd。我使用 xpath 来检索一些节点,所以我得到了一个 org.w3c.dom.Node 的列表。如何从模式中获取每个节点的类型,例如。 xs:integer, xs:string 等?
一些解决方案是使用 node.getNodeName() 作为 NodeName 来解析带有 xpath 查询“//NodeName[@type]”的模式,但这并不完美。我不能确定模式是否优雅 - 如果 NodeName 存在于模式中的许多地方并且没有被提取为单独的类型怎么办?
所以通常我正在寻找一种可靠的解决方案来获取任何有效 xml 和 xsd 的节点类型。
【问题讨论】:
-
我正在寻找的整个想法是成为类生成的替代方案。问题是架构经常更改,我无法让生成的代码保持最新。我想我希望利用标准模式验证,并在我自己的院子里使用它的一部分。毕竟我不需要为 java 类型映射 xsd 类型,我需要的只是有关 schema 中相应元素的“type”属性的信息。