Автор оригинала: Pankaj Kumar.
Иногда при программировании на java мы получаем Строку
, которая на самом деле является XML, и для ее обработки нам нужно преобразовать ее в XML-документ ( org.w3c.dom.Документ
). Также для целей отладки или для отправки в какую-либо другую функцию нам может потребоваться преобразовать объект документа в строку.
Здесь я предоставляю две полезные функции.
Документ convertStringToDocument(Строка xmlStr)
: Этот метод примет входные данные в виде строки, а затем преобразует их в документ DOM и вернет его. Для этого преобразования мы будем использовать Источник ввода и средство чтения строк.Строка convertDocumentToString(Документ doc)
: Этот метод примет ввод в качестве документа и преобразует его в строку. Для этой цели мы будем использоватьTransformer
,StringWriter
иStreamResult
.
package com.journaldev.xml; import java.io.StringReader; import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.xml.sax.InputSource; public class StringToDocumentToString { public static void main(String[] args) { final String xmlStr = "\n"+ ""; Document doc = convertStringToDocument(xmlStr); String str = convertDocumentToString(doc); System.out.println(str); } private static String convertDocumentToString(Document doc) { TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer; try { transformer = tf.newTransformer(); // below code to remove XML declaration // transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); StringWriter writer = new StringWriter(); transformer.transform(new DOMSource(doc), new StreamResult(writer)); String output = writer.getBuffer().toString(); return output; } catch (TransformerException e) { e.printStackTrace(); } return null; } private static Document convertStringToDocument(String xmlStr) { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder; try { builder = factory.newDocumentBuilder(); Document doc = builder.parse( new InputSource( new StringReader( xmlStr ) ) ); return doc; } catch (Exception e) { e.printStackTrace(); } return null; } } Pankaj 25 \n"+ "Developer Male
Когда мы запускаем вышеуказанную программу, мы получаем тот же вывод строки, который мы использовали для создания документа DOM.
Pankaj 25 Developer Male
Вы можете использовать replaceAll("\n|\r","")
, чтобы удалить новые символы строки из строки и получить ее в компактном формате.