使用Java获取.XSD文件的对象表示

时间:2009-11-12 22:38:33

标签: java xml xsd

在Java中获取XML模式(.XSD)的静态类型表示的最简单方法是什么?

更具体地说,我希望能够以编程方式遍历XSD中所有已定义的simpleType:s和complexType:s,获取已定义的元素及其类型等。

有些事情:

for (XsdComplexType complexType : document.getDefinedComplexTypes()) {
  ..
}

请注意:我正在讨论.XSD文档的对象表示。我不是从XML模式中寻找xjc样式生成的Java类。

一种方法是简单地将标准XML阅读工具应用于.XSD文件,但我假设有一些开源库可以帮助我解决这个问题。如上面的伪代码所示,我想要一个静态类型的XSD文档表示。

5 个答案:

答案 0 :(得分:3)

你看过Apache XmlSchema了吗?我从来没有使用它,但它似乎很合适。

答案 1 :(得分:2)

查看Castor XML库的Schema课程。并SchemaReader加载它。它应该是你正在寻找的。

包含以下方法:


 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文档阅读,然后做你想做的任何事情?