Преобразование XML к [закрытым] объектам Java

Что лучший способ состоит в том, чтобы преобразовать XML в объекты Java?

Я не хочу подобное для подобного представления, но хотел бы вытащить определенные данные из XML и заполнить объект Java. Я взглянул на XStream, но действительно не любил целое "движение вниз, перемещал вверх" тип материала. Я предпочел бы DOM как объект при записи преобразователей...

22
задан Pabru 14 April 2016 в 10:50
поделиться

7 ответов

Я знаю, что всем нравятся автоматические решения, такие как JAXB и тому подобное, но я бы рекомендовал ручное кодирование javax.xml.bind.Marshaller и javax.xml. bind.Unmarshaller , чтобы получить именно то, что вы хотите, без ненужного заполнения пространства perm gen. Используйте JDOM для синтаксического анализа XML и сопоставления значений с объектами Java с помощью XPath. Придется потрудиться, чтобы сделать это один раз, но у вас будет именно то, что вам нужно, и не более того.

12
ответ дан 29 November 2019 в 03:53
поделиться

Если у вас есть XML-схема, JAXB подойдет - поставляется как часть JDK. Создайте классы Java, запустив, например, xjc -p foo myschema.xsd

Чтобы прочитать XML-файл и получить обратно объект (из классов, сгенерированных инструментом xjc):

    JAXBContext context = JAXBContext.newInstance(FooObj.class);
    Unmarshaller unMarshaller = context.createUnmarshaller();
    FooObj param = (FooObj) unMarshaller.unmarshal(new FileInputStream("Foo.xml"));

Вы можете делать аналогичные вещи, если вам нужны только части XML-документа преобразованный в объект, вы должны, например, иметь возможность предоставить JAXB часть документа DOM вместо целого файла, как это было сделано выше.

24
ответ дан 29 November 2019 в 03:53
поделиться

Ознакомьтесь с Apache Digester

http://commons.apache.org/digester/

8
ответ дан 29 November 2019 в 03:53
поделиться

Я не совсем уверен, что это именно то, что вы ищете, но вы можете использовать что-то вроде XMLBeans для привязки XML к объектам Java. Мне приходилось использовать его у предыдущего работодателя. К сожалению, это была существующая система, и мне нужно было только манипулировать объектами, и мне не нужно было создавать библиотеку, которая их содержит. Кроме того, я не уверен, насколько хорошо он будет работать без XSD (вы не упомянули, есть он у вас или нет).

2
ответ дан 29 November 2019 в 03:53
поделиться

Мне нравится Simple, и с ним очень легко работать. Это создает подобное представление, хотя, возможно, не совсем то, что вы ищете.

Если вы ищете DOM-подобное решение, возможно, подойдет JDom.

3
ответ дан 29 November 2019 в 03:53
поделиться

Вы можете использовать Castor для удобного преобразования XML в Java и обратно.

С Castor вы можете

  1. Упростить преобразование: простые средства Marshaller и Unmarshaller значительно упрощают преобразование XML в Java и обратно.
  2. Отображение: можно создать файл отображения, чтобы ограничить объем данных, которые нужно преобразовать из XML в Java и обратно.
4
ответ дан 29 November 2019 в 03:53
поделиться

JAXB - лучший способ преобразования объектов в XML, а MOXy - лучшая реализация JAXB.

  • JAXB является стандартным, включен в Java SE 6
  • Стандартная технология связывания XML для JAX-WS, JAX-RS и SCA
  • Простое время выполнения

MOXy предлагает следующие расширения:

6
ответ дан 29 November 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: