Что лучший способ состоит в том, чтобы преобразовать XML в объекты Java?
Я не хочу подобное для подобного представления, но хотел бы вытащить определенные данные из XML и заполнить объект Java. Я взглянул на XStream, но действительно не любил целое "движение вниз, перемещал вверх" тип материала. Я предпочел бы DOM как объект при записи преобразователей...
Я знаю, что всем нравятся автоматические решения, такие как JAXB и тому подобное, но я бы рекомендовал ручное кодирование javax.xml.bind.Marshaller
и javax.xml. bind.Unmarshaller
, чтобы получить именно то, что вы хотите, без ненужного заполнения пространства perm gen. Используйте JDOM для синтаксического анализа XML и сопоставления значений с объектами Java с помощью XPath. Придется потрудиться, чтобы сделать это один раз, но у вас будет именно то, что вам нужно, и не более того.
Если у вас есть 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 вместо целого файла, как это было сделано выше.
Я не совсем уверен, что это именно то, что вы ищете, но вы можете использовать что-то вроде XMLBeans для привязки XML к объектам Java. Мне приходилось использовать его у предыдущего работодателя. К сожалению, это была существующая система, и мне нужно было только манипулировать объектами, и мне не нужно было создавать библиотеку, которая их содержит. Кроме того, я не уверен, насколько хорошо он будет работать без XSD (вы не упомянули, есть он у вас или нет).
Мне нравится Simple, и с ним очень легко работать. Это создает подобное представление, хотя, возможно, не совсем то, что вы ищете.
Если вы ищете DOM-подобное решение, возможно, подойдет JDom.
Вы можете использовать Castor для удобного преобразования XML в Java и обратно.
С Castor вы можете
JAXB - лучший способ преобразования объектов в XML, а MOXy - лучшая реализация JAXB.
MOXy предлагает следующие расширения: