создание - чтение xml java




Каков наилучший способ преобразования объекта java в xml с открытым исходным кодом apis (5)

В этом пространстве есть много рамок с открытым исходным кодом. Однако Simple как показывает его название, на сегодняшний день является самым простым способом выполнения сериализации. Взгляните на Tutorial . Другая особенность заключается в том, что он может выполнять полиморфную сериализацию, что означает, что он не так ограничен, как JAXB, например.

Мне было интересно, что лучший или наиболее распространенный apis - преобразовать java-объект в xml. Я довольно новичок в этом вопросе. Есть ли какой-то вызов api, который вы можете сделать, чтобы передать объект и вернуть xml? Или это гораздо более утомительно, когда вам нужно создать документ вручную, вытащив значения объекта?

Я читал о xerces, sax и jaxb. Я хотел бы продолжить этот маршрут с открытым исходным кодом.

Благодаря!



Доступно с Java 6 - это API для преобразования аннотированных объектов Java в XML. Следующий код показывает, как преобразовать аннотированный объект в строку XML

final JAXBElement<Type> o = new ObjectFactory().createElement(new Type());

final Marshaller m = JAXBContext.newInstance(Type.class).createMarshaller();

// Do this if you want the result to be more human readable.
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(o, System.out);

Вы можете дополнительно расширить это, добавив проверку схемы (обратите внимание на очень медленную, но полезную для отладки)

final JAXBElement<Type> o = new ObjectFactory().createElement(new Type());

final Marshaller m = JAXBContext.newInstance(Type.class).createMarshaller();
final Schema schema = SchemaFactory.newInstance(
  "http://www.w3.org/2001/XMLSchema").newSchema(
  getClass().getResource("/META-INF/wsdl/schema.xsd"));
m.setSchema(schema);
m.marshal(o, System.out);

Вам не нужно преобразовывать тип в JAXBElement, если Type является определенным элементом. (т. е. имеет аннотацию @XmlRootElement)



JAXB определенно является решением.

Зачем? Ну, это внутри JDK 6 , так что вы никогда не найдете его без изменений.

Он использует аннотации Java для объявления свойств, связанных с XML, для классов, методов и полей.

Учебное пособие 1

Учебное пособие 2

Примечание. JAXB также позволяет легко «развязать» XML-данные (которые ранее были обработаны из экземпляров объектов Java) обратно в экземпляры объектов.

Еще одна замечательная вещь в JAXB: она поддерживается другими технологиями, связанными с Java, такими как JAX-RS (API Java RESTful, который доступен как часть Java EE 6 ). JAX-RS может обслуживать и получать объекты JAXB « на лету» , без необходимости их сортировки / развязывания. Возможно, вы захотите проверить Netbeans , который содержит встроенную поддержку JAX-RS. Прочтите этот учебник для начала работы.

редактировать:

Для marshall / unmarshall «случайных» (или чужих) Java-объектов JAXB предлагает довольно простую возможность: можно объявить XmlAdapter и «обернуть» существующие классы Java как JAXB-совместимые. Использование такого XmlAdapter выполняется с помощью @XmlJavaTypeAdapter -nnotation.





serialization