用JDOM解析XML檔案時如何解決中文問題?如何解析?
阿新 • • 發佈:2018-11-11
1 import javax.xml.parsers.DocumentBuilder;
2 import javax.xml.parsers.DocumentBuilderFactory;
3 import javax.xml.transform.OutputKeys;
4 import javax.xml.transform.Transformer;
5 import javax.xml.transform.TransformerFactory;
6 import javax.xml.transform.dom.DOMSource;
7 import javax.xml.transform.stream.StreamResult;
8
9 import org.w3c.dom.Document;
10 import org.w3c.dom.Element;
11
12 public class DOMTest {
13 private String inFile = "D:\\test.xml";
14 private String outFile = "D:\\test.xml";
15
16 public static void main(String[] args) {
17 new DOMTest();
18 }
19
20 public DOMTest() {
21 try {
22 //1、獲取DOM解析器工廠,以便產生解析器;2、獲取DOM解析器,以便解析DOM
23 DocumentBuilder builder = DocumentBuilderFactory
24 .newInstance().newDocumentBuilder();
25 Document doc = builder.newDocument();
26 //建立元素
27 Element root = doc.createElement("person");
28 Element a = doc.createElement("name");
29 Element b = doc.createElement("age");
30 //向指定元素節點中增加子元素節點或增加元素到子節點
31 a.appendChild(doc.createTextNode("小白"));
32 b.appendChild(doc.createTextNode("18歲"));
33 root.appendChild(a);
34 root.appendChild(b);
35 doc.appendChild(root);
36 //設定後要把DOM寫回XML檔案
37 Transformer transformer = TransformerFactory
38 .newInstance().newTransformer();
39 //編碼指定Transformer應該使用的首選字元編碼,將字元序列作為位元組序列進行編碼
40 transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
41 //縮排指定Transformer是否可以新增額外的空白,同時輸出
42 transformer.setOutputProperty(OutputKeys.INDENT, "yes");
43 transformer.transform(new DOMSource(doc), new StreamResult(outFile));
44 } catch (Exception e) {
45 System.out.println(e.getMessage());
46 }
47 }