2011-01-25 4 views
4

XML DOM을 고려하여 문자열에 쓰는 것을 목표로하는 Java 프로그램이 있습니다. 나는이 패키지를 사용하고 있습니다 : org.w3c.dom.*javax.xml.parsers.*;Java에서 문서에서 xml 문자열 가져 오기

를 그래서 나는이 DocumentBuilder, Document, Element 객체 ...

하나의 호출에 내 XML을 DOM을 나타내는 문자열을 얻을 수있는 방법이 있나요

????

+1

확실히 - Grammin의 솔루션을 가져 와서 메서드에 추출한 다음 * 하나의 호출 * :'String xml = serialize (document); ' –

+0

글쎄요 ... 포장이 항상 최고의 해결책은 아닙니다. :) 그러나 당신을 행크 : – 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

괜찮아요 ...하지만 xml 변환에 대한 호출이 아니에요 ?? 정말 필요한가요? 이 라이브러리가이 목적을 달성하기 위해 tostring을 구현하지 않았을 가능성이 있습니까? ... 그러나 감사합니다. 시도해 볼게. – Andry

0

DOM을 직렬화하는 저렴하고 효율적인 방법을 찾고 있습니다.

아마도 한 번의 호출이 아닌 LSSerializer 방식을 시도해 볼 수 있습니다.

+0

음, 그렇습니다. 좋은 접근법입니다. 시도해 보았습니다 ... 고맙습니다. – 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) 메소드를 사용하는 것입니다.