Преобразование объектов XML в Java
Какой лучший способ конвертировать XML в объекты Java?
Мне не нравится подобное представление, но хотелось бы вытащить определенные данные из XML и заполнить объект Java. Я посмотрел на XStream, но мне не понравилось, что все "спуститься вниз, двигаться вверх". Я бы предпочел DOM как объект при записи конвертеров...
Ответы
Ответ 1
Я знаю, что все любят автоматические решения, такие как JAXB и т.д., но я бы рекомендовал использовать кодировки javax.xml.bind.Marshaller
и javax.xml.bind.Unmarshaller
для ручного кодирования, чтобы получить именно то, что вы хотите, без необходимости заполнять пространство perm perm. Используйте JDOM для анализа XML и сопоставления значений с объектами Java с помощью XPath. Это будет некоторая работа, чтобы сделать это один раз, но у вас будет именно то, что вам нужно, и больше ничего.
Ответ 2
Если у вас есть 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, а не весь файл, как указано выше.
Ответ 3
Проверьте Apache Digester
http://commons.apache.org/digester/
Ответ 4
JAXB - лучший способ конвертировать объекты в XML, а MOXy - лучшая реализация JAXB.
- JAXB является стандартным, включенным в Java SE 6
- Стандартная технология привязки XML для JAX-WS, JAX-RS и SCA
- Простая среда выполнения
MOXy предлагает следующие расширения:
Ответ 5
Мне нравится Simple и с ним очень легко работать. Это действительно похоже на подобное представление, хотя, возможно, не совсем то, что вы ищете.
Если вы ищете DOM-подобное решение, возможно, подходит JDom.
Ответ 6
Вы можете использовать Castor для удобного преобразования XML в Java и обратно.
С Castor вы можете
- Простое преобразование: простой Marshaller и Unmarshaller делает преобразование XML в Java и обратно чрезвычайно простым.
- Сопоставление: файл сопоставления может быть создан для ограничения объема данных, которые должны быть преобразованы из XML в Java и обратно.
Ответ 7
Я не совсем уверен, что это то, что вы ищете, но вы можете использовать что-то вроде XMLBeans для привязки XML к объектам Java. Я должен был использовать его у предыдущего работодателя. К сожалению, это была существующая система, и я только должен был манипулировать объектами и не должен был создавать библиотеку, которая их содержит. Кроме того, я не уверен, насколько хорошо он будет работать без XSD (вы не упомянули, был ли у вас один или нет).