반응형
이 코드보다 XML 문서를 문자열로 변환하는 더 우아한 방법이 있습니까?
현재 사용중인 코드입니다.
public String getStringFromDoc(org.w3c.dom.Document doc) {
try
{
DOMSource domSource = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(domSource, result);
writer.flush();
return writer.toString();
}
catch(TransformerException ex)
{
ex.printStackTrace();
return null;
}
}
public String getStringFromDoc(org.w3c.dom.Document doc) {
DOMImplementationLS domImplementation = (DOMImplementationLS) doc.getImplementation();
LSSerializer lsSerializer = domImplementation.createLSSerializer();
return lsSerializer.writeToString(doc);
}
변환기 API는 DOM 객체에서 직렬화된 형태(이 경우 String)로 변환할 수 있는 유일한 XML 표준 방법입니다.표준으로 나는 XML 프로세싱을 위한 SUN Java XML API를 의미합니다.
Xerces XML Serializer 또는 JDOM XML Outputter와 같은 다른 대안은 보다 직접적인 방법이지만(더 적은 코드) 프레임워크에 특화되어 있습니다.
제 생각에 당신이 사용한 방식은 가장 우아하고 휴대하기 쉬운 것 같습니다.표준 XML Java API를 사용하면 코드를 변경하지 않고도 원하는 XML-Parser 또는 XML-Transformer를 플러그인할 수 있습니다(JDBC 드라이버와 동일).그것보다 더 우아한 것이 있습니까?
이것은 좀 더 간결합니다.
try {
Transformer transformer = TransformerFactory.newInstance().newTransformer();
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);
return result.getWriter().toString();
} catch(TransformerException ex) {
ex.printStackTrace();
return null;
}
그렇지 않으면 Apache의 XML Serializer와 같은 라이브러리를 사용할 수 있습니다.
//Serialize DOM
OutputFormat format = new OutputFormat (doc);
// as a String
StringWriter stringOut = new StringWriter ();
XMLSerializer serial = new XMLSerializer (stringOut,format);
serial.serialize(doc);
// Display the XML
System.out.println(stringOut.toString());
XOM을 사용할 수 있습니다.
org.w3c.dom.Document domDocument = ...;
nu.xom.Document xomDocument =
nu.xom.converters.DOMConverter.convert(domDocument);
String xml = xomDocument.toXML();
Jsoup을 사용할 수 있습니다.
org.jsoup.helper.W3CDom converter = new W3CDom();
String html = converter.asString( domDocument );
언급URL : https://stackoverflow.com/questions/315517/is-there-a-more-elegant-way-to-convert-an-xml-document-to-a-string-in-java-than
반응형
'programing' 카테고리의 다른 글
| ajax 시간 초과 콜백 함수 (0) | 2023.09.12 |
|---|---|
| git에서 꺼내는 동안 오류 발생 - 리포지토리 데이터베이스 .git/objects에 개체를 추가할 수 있는 권한이 부족합니다. (0) | 2023.09.12 |
| jQuery에서 이벤트 핸들러에 인수를 전달하려면 어떻게 해야 합니까? (0) | 2023.09.12 |
| %wt% 등이 작동하지 않음 (0) | 2023.09.12 |
| jQuery POST 양식 데이터 (0) | 2023.09.12 |