2011-01-25 3 views
4

У меня есть Java-программа, цель которой - рассмотреть объект xml и записать его в строку. Я использую эти пакеты: org.w3c.dom.* и javax.xml.parsers.*;Получение строки xml из документа в Java

Так что я DocumentBuilder, Document, Element объектов ...

Есть ли способ, чтобы получить строку, представляющую мой XML DOM в одном вызове ????

+1

Правильно - возьмите решение Grammin и извлеките его в метод - тогда у вас есть * один вызов *: 'String xml = serialize (document);' –

+0

Ну, это другое ... упаковка не всегда лучшее решение :) однако hank you :) – Andry

ответ

15

Его не один вызов, но:

TransformerFactory transfac = TransformerFactory.newInstance(); 
Transformer trans = transfac.newTransformer(); 
trans.setOutputProperty(OutputKeys.METHOD, "xml"); 
trans.setOutputProperty(OutputKeys.INDENT, "yes"); 
trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", Integer.toString(2)); 

StringWriter sw = new StringWriter(); 
StreamResult result = new StreamResult(sw); 
DOMSource source = new DOMSource(doc.getDocumentElement()); 

trans.transform(source, result); 
String xmlString = sw.toString(); 

Метод setOutputProperty делает вывод строки похорошела, так что вы можете взять его.

+0

ok ... но это не вызов для преобразования xml ?? действительно ли это необходимо? возможно ли, что эта библиотека не реализует tostring для достижения этой цели? ... однако спасибо. Я попробую. – Andry

0

Я также ищу дешевый и эффективный способ сериализации DOM. До сих пор я вижу только два варианта:

Возможно, вы можете попробовать подход LSSerializer (но не в один звонок).

+0

Ну, да, это хороший подход, и я попробовал и работал ... thankyou – Andry

2
String xmlString = org.apache.ws.security.util.XMLUtils.PrettyDocumentToString(doc); 
0

Метод org.apache.axis.utils.XMLUtils.PrettyDocumentToString (Документ) есть проблема, которая включает в себя пробелы в значениях тегов.

Решение использует метод org.apache.axis.utils.XMLUtils.DocumentToString (Document).

Смежные вопросы