Получение объектного представления файла .XSD в Java - PullRequest
1 голос
/ 13 ноября 2009

Какой самый простой способ получить статически типизированное представление схемы XML (.XSD) в Java?

Более конкретно, я хочу иметь возможность программно проходить через все определенные simpleType: s и complexType: s в XSD, получать определенные элементы и их типы и т. Д.

Что-то вроде:

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

Обратите внимание: я говорю об объектном представлении документа .XSD. Я не ищу xjc стиль генерации классов Java из схемы XML.

Один из подходов состоит в том, чтобы просто применить стандартные инструменты чтения XML к файлу .XSD, но я предполагаю, что существуют библиотеки с открытым исходным кодом, которые могут помочь мне решить эту проблему. Как видно из приведенного выше псевдокода, я хотел бы получить статически типизированное представление документа XSD.

Ответы [ 5 ]

3 голосов
/ 13 ноября 2009

Вы смотрели на Apache XmlSchema ? Я никогда не использовал его, но это похоже на хорошую подгонку.

2 голосов
/ 13 ноября 2009

Ознакомьтесь с классом Схема библиотеки Castor . И SchemaReader , чтобы загрузить его. Это должно быть именно то, что вы ищете.

Содержит методы, такие как:


 public java.util.Enumeration getComplexTypes()
    Returns:
        an Enumeration of all top-level ComplexType declarations
1 голос
/ 13 ноября 2009

Попробуйте 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
    }
 }
0 голосов
/ 13 ноября 2009

Хотя я согласен и хочу поддержать два других (на данный момент) ответа, в которых предлагалось использовать стандартный инструмент, такой как dom4j или jdom, я бы хотел выдвинуть предложение вне стен. Вы можете использовать JiBX или другой инструмент связывания данных XML для создания объектов Java по своему вкусу непосредственно из XML-схемы.

Или вы можете просто использовать стандартный DOM-парсер.

0 голосов
/ 13 ноября 2009

Почему бы просто не прочитать его как документ DOM, а затем делать с ним все, что вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...