2010-12-14 4 views
2

Как преобразовать XML-документ в объект Java (или массив)? я в XML прочитанные как это:Java: XML to Object (или Array)

DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder dBuilder = dFactory.newDocumentBuilder(); 

Document doc = dBuilder.parse(new File("file.xml")); 
doc.getDocumentElement().normalize(); 

Теперь я хочу, что XML как объект (или массив), но как я должен делать это? Существуют ли какие-либо методы или учебные пособия или классы для этого?

+2

Какой объект вам нужен и какой файл XML у вас есть? Вам нужно уточнить больше, иначе ответ будет «Вы сделали это!», Так как «Документ» является «Объектом» и был создан из файла XML. – khachik

+0

Что я имею в виду под «Я хочу, чтобы XML как объект», так что же такое doc ?, можно ли описать, что именно хотите? – omar

+0

Извините за эту ошибку, я должен сказать (просто) массив. – Poru

ответ

3

Я рекомендую использовать XStream для сериализации XML (de). Это способ проще, чем использовать встроенные XML-интерфейсы Java.

+0

Отъезд: http://bdoughan.blogspot.com/2010/10/how-does-jaxb-compare-to-xstream.html –

+0

@Blaise: спасибо за ссылку. Я никогда не пробовал/не использовал JAXB. –

+0

Нет проблем. Также JAXB является стандартом, поэтому существует несколько реализаций: Metro (RI, включенный в Java SE 6), EclipseLink MOXy (я - технический лидер) и JaxMe –

9

Использование XStream.

объекта в XML

Person joe = new Person("Joe", "Walnes"); 
joe.setPhone(new PhoneNumber(123, "1234-456")); 
joe.setFax(new PhoneNumber(123, "9999-999")); 
String xml = xstream.toXML(joe); 

Результирующий XML выглядит следующим образом:

<person> 
    <firstname>Joe</firstname> 
    <lastname>Walnes</lastname> 
    <phone> 
    <code>123</code> 
    <number>1234-456</number> 
    </phone> 
    <fax> 
    <code>123</code> 
    <number>9999-999</number> 
    </fax> 
</person>  

XML в объект

Person newJoe = (Person)xstream.fromXML(xml); 

Также см

+0

. Выезд: http://bdoughan.blogspot.com/2010 /10/how-does-jaxb-compare-to-xstream.html и http: //bdoughan.blogspot.com/2010/10/how-do-jaxb-compare-to-simple.html –

+0

@Blaise Doughan http://xstream.codehaus.org/tutorial.html Отъезд –

+0

life.java: я видел учебник XStream , Если вы хотите увидеть что-то классное, ознакомьтесь с этим примером MOXy, демонстрирующим сопоставление на основе XPath (я ведущий tech): http://bdoughan.blogspot.com/2010/09/xpath-based-mapping-geocode-example. html –

0

Я использовал Simple XML и нашел это довольно простым и мощным. Я не так хорошо знаком с XStream, но Simple позволяет вам контролировать вашу XML-схему, используя аннотации, которые дают вам большую свободу. Парень, который его пишет, всегда реагирует на свой список рассылки.

+0

Оформить заказ: http://bdoughan.blogspot.com/2010/10/how-does-jaxb-compare-to-simple.html –

1

Я бы посмотрел на JAX/B, который дает возможность «связывать» между объектами Java и представлениями XML.

У меня есть крошечная запись, сделанная с помощью инструмента Rational Eclipse here, но, похоже, они (никогда не использовали их сами) были прямолинейными плагинами Eclipse, например this.

Действительно, написание JAX/B вручную возможно, немного скучно для сложного XML, но аннотации довольно просты.