有时,在 Java 编程时,我们会得到‘String’,实际上是 XML,并且要处理它,我们需要将其转换为 XML 文档(‘org.w3c.dom.Document’)。
Document convertStringToDocument(String xmlStr)
: 此方法将输入作为 String,然后将其转换为 DOM 文档,然后返回它. 我们将使用 InputSource 和 StringReader 进行这种转换.String convertDocumentToString(Document doc)
: 此方法将输入为 Document 并将其转换为 String。
1package com.journaldev.xml;
2
3import java.io.StringReader;
4import java.io.StringWriter;
5
6import javax.xml.parsers.DocumentBuilder;
7import javax.xml.parsers.DocumentBuilderFactory;
8import javax.xml.transform.OutputKeys;
9import javax.xml.transform.Transformer;
10import javax.xml.transform.TransformerException;
11import javax.xml.transform.TransformerFactory;
12import javax.xml.transform.dom.DOMSource;
13import javax.xml.transform.stream.StreamResult;
14
15import org.w3c.dom.Document;
16import org.xml.sax.InputSource;
17
18public class StringToDocumentToString {
19
20 public static void main(String[] args) {
21 final String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"+
22 "<Emp id=\"1\"><name>Pankaj</name><age>25</age>\n"+
23 "<role>Developer</role><gen>Male</gen></Emp>";
24 Document doc = convertStringToDocument(xmlStr);
25
26 String str = convertDocumentToString(doc);
27 System.out.println(str);
28 }
29
30 private static String convertDocumentToString(Document doc) {
31 TransformerFactory tf = TransformerFactory.newInstance();
32 Transformer transformer;
33 try {
34 transformer = tf.newTransformer();
35 // below code to remove XML declaration
36 // transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
37 StringWriter writer = new StringWriter();
38 transformer.transform(new DOMSource(doc), new StreamResult(writer));
39 String output = writer.getBuffer().toString();
40 return output;
41 } catch (TransformerException e) {
42 e.printStackTrace();
43 }
44
45 return null;
46 }
47
48 private static Document convertStringToDocument(String xmlStr) {
49 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
50 DocumentBuilder builder;
51 try
52 {
53 builder = factory.newDocumentBuilder();
54 Document doc = builder.parse( new InputSource( new StringReader( xmlStr ) ) );
55 return doc;
56 } catch (Exception e) {
57 e.printStackTrace();
58 }
59 return null;
60 }
61
62}
当我们运行程序时,我们得到相同的 String 输出,我们用来创建 DOM 文档。
1<?xml version="1.0" encoding="UTF-8"?><Emp id="1"><name>Pankaj</name><age>25</age>
2<role>Developer</role><gen>Male</gen></Emp>
您可以使用 replaceAll(\"ņ\r", "")
从 String 中删除新行字符,并以紧凑格式获取它。