Java 字符串转换为 XML 文档和 XML 文档转换为字符串

有时,在 Java 编程时,我们会得到‘String’,实际上是 XML,并且要处理它,我们需要将其转换为 XML 文档(‘org.w3c.dom.Document’)。

  1. Document convertStringToDocument(String xmlStr): 此方法将输入作为 String,然后将其转换为 DOM 文档,然后返回它. 我们将使用 InputSource 和 StringReader 进行这种转换.
  2. 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 中删除新行字符,并以紧凑格式获取它。

Published At
Categories with 技术
Tagged with
comments powered by Disqus