2013-09-04 3 views
1

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

Я уже прочитал руководство XSOM пользователя, но я многого не понимаю ...

Может кто-то помочь мне реализовать функцию моего addElementsFromSchema (xsdfile File), потому что я потерял себя, пытаясь.

public static void addElementsFromSchema(File xsdfile){ 

} 
+0

Вы пытаетесь получить список всех '' определений? Вам нужны только имена (как определено в каждом ), или вам нужно определение всего типа каждого элемента? – VGR

+0

Я должен получить определение каждого типа каждого элемента. Но в помощнике содержания будет показано только имя (name = "..."). – Student22b

+0

Знаете ли вы, как вы визуально представляете определение каждого элемента? Вы хотите отобразить оригинальный XML, или у вас есть что-то еще? – VGR

ответ

0

Похоже, что ваша основная потребность, по крайней мере на данный момент, состоит в том, чтобы получить имена элементов. Вы можете получить имена элементов что-то вроде:

XSOMParser parser = new XSOMParser(); 
parser.parse(xsdfile); 

XSSchemaSet schemas = parser.getResult(); 
Iterator<XSElementDecl> i = schemas.iterateElementDecls(); 
while (i.hasNext()) { 
    XSElementDecl element = i.next(); 
    String name = element.getName(); 
    // Add to editor 
} 

Показан элементу определения является намного более сложным, так как декларации элементов в схемах XML могут быть довольно сложными.

+0

Спасибо, но я получаю много ошибок: Исключение в потоке «AWT-EventQueue-0» java.lang.NoClassDefFoundError: org/relaxng/datatype/ValidationContext Caused by: java.lang.ClassNotFoundException: org.relaxng.datatype .ValidationContext – Student22b

+0

Вам нужно relaxngDatatype.jar в вашем пути к классам. С http://xsom.java.net: ** Оба варианта xsom.jar зависят от relaxngDatatype.jar и JAXP 1.1. Убедитесь, что у вас есть хотя бы xsom.jar и relaxngDatatype.jar, когда вы распространяете приложение, использующее XSOM. ** – VGR

+0

Большое спасибо! Он отлично работает. – Student22b

Смежные вопросы