Ответ 1
Эта статья может вам помочь... вам нужно только знать xpath http://onjava.com/onjava/2007/09/07/schema-less-java-xml-data-binding-with-vtd-xml.html
Я пытаюсь найти самый простой способ сопоставить xml файл с простым старым Java-объектом.
Примечание. В моем примере xml не совсем совпадает с моим предполагаемым POJO.
///////// THE XML
<?xml version="1.0" encoding="UTF-8"?>
<Animal>
<standardName>
<Name>Cat</Name>
</standardName>
<standardVersion>
<VersionIdentifier>V02.00</VersionIdentifier>
</standardVersion>
</Animal>
////// THE INTENDED POJO
class Animal
{
private String name;
private String versionIdentifier;
}
Обычный JAXB (с аннотациями) не будет работать, поскольку аннотации имени JAXM Element не позволяют мне указывать вложенные элементы. (т.е. standardName/Name).
Я посмотрел на Jibx, но это кажется слишком сложным, и никаких полных примеров не предусмотрено для того, что я хочу делать.
Кастро кажется, что он сможет делать то, что я хочу (используя файлы сопоставления), но мне интересно, есть ли другие возможные решения. (Возможно, это позволит мне пропускать файлы сопоставления и просто разрешить мне указывать все в аннотациях).
Спасибо
Эта статья может вам помочь... вам нужно только знать xpath http://onjava.com/onjava/2007/09/07/schema-less-java-xml-data-binding-with-vtd-xml.html
EclipseLink JAXB (MOXy) позволяет выполнять сопоставление на основе маршрутов, которое вы ищете:
@XmlRootElement
class Animal
{
@XmlPath("standardName/Name/text()")
private String name;
@XmlPath("standardVersion/VersionIdentifier/text()");
private String versionIdentifier;
}
Для получения дополнительной информации см.
EclipseLink также позволяет указывать метаданные с помощью внешнего файла конфигурации:
Jakarta Commons Digester должен делать то, что вы хотите.
В качестве альтернативы я бы рекомендовал написать класс преобразования, который использует XPath для извлечения элементов из XML.
Я считаю JiBX лучшим из связки (JAXB, Castor, XMLBeans и т.д.), особенно потому, что я предпочитаю файлы сопоставления над аннотациями. По общему признанию, он имеет приличную кривую обучения, но на веб-сайте есть много хороших примеров. Вы, должно быть, пропустили tutorial.
Если вы идете только одним способом (XML → POJO), вы можете использовать Digester.
Боковой комментарий: я предпочитаю сопоставлять файлы через аннотации, потому что аннотации: