在Java中获取XML模式(.XSD)的静态类型表示的最简单方法是什么?
更具体地说,我希望能够以编程方式遍历XSD中所有已定义的simpleType:s和complexType:s,获取已定义的元素及其类型等。
有些事情:
for (XsdComplexType complexType : document.getDefinedComplexTypes()) {
..
}
请注意:我正在讨论.XSD文档的对象表示。我不是从XML模式中寻找xjc
样式生成的Java类。
一种方法是简单地将标准XML阅读工具应用于.XSD文件,但我假设有一些开源库可以帮助我解决这个问题。如上面的伪代码所示,我想要一个静态类型的XSD文档表示。
答案 0 :(得分:3)
你看过Apache XmlSchema了吗?我从来没有使用它,但它似乎很合适。
答案 1 :(得分:2)
查看Castor XML库的Schema课程。并SchemaReader加载它。它应该是你正在寻找的。 p>
包含以下方法:
public java.util.Enumeration getComplexTypes()
Returns:
an Enumeration of all top-level ComplexType declarations
答案 2 :(得分:1)
试试org.apache.ws.jaxme.generator.sg.impl.JAXBSchemaReader。以下是可能有效的示例代码段:
org.apache.ws.jaxme.generator.sg.SchemaSG schema = JaxbSchemaReader.parse(schema);
org.apache.ws.jaxme.generator.sg.TypeSG types = schema.getTypes();
for (TypeSG type : types) {
if (type.getComplexTypeSG() != null) {
//do something here
}
}
答案 3 :(得分:0)
虽然我同意并想要使用dom4j或jdom等标准工具提出的其他两个(目前)答案,但我想提出一个现成的建议。您可以使用JiBX或其他XML数据绑定工具直接从架构XML生成您喜欢的Java对象。
或者你可以使用标准的DOM解析器。
答案 4 :(得分:-2)
为什么不把它作为DOM文档阅读,然后做你想做的任何事情?