首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java XML 程式設計入門:DOM 解析與寫入實例

     編輯:Java 程式設計入門

範例 XML 檔案:Input.xml

<?xml version="1.0" encoding="GB2312"?>
<學生花名冊>
  <學生 性別="男">
    <姓名>李華</姓名>
    <年齡>14</年齡>
    <電話>6287555</電話>
  </學生>
  <學生 性別="男">
    <姓名>張三</姓名>
    <年齡>16</年齡>
    <電話>8273425</電話>
  </學生>
</學生花名冊>

資料 Bean:StudentBean

public class StudentBean {
  private String sex, name, phone; private int age;
  // getter/setter 省略
}

DOM 解析讀取:readXMLFile()

private void readXMLFile(String inFile) throws Exception {
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  Document doc = db.parse(inFile);

  Element root = doc.getDocumentElement(); // 學生花名冊
  NodeList students = root.getElementsByTagName("學生");

  for (int i = 0; i < students.getLength(); i++) {
    Element stu = (Element) students.item(i);
    StudentBean bean = new StudentBean();
    bean.setSex(stu.getAttribute("性別"));

    bean.setName(getTextContent(stu, "姓名"));
    bean.setAge(Integer.parseInt(getTextContent(stu, "年齡")));
    bean.setPhone(getTextContent(stu, "電話"));

    studentVector.add(bean);
  }
}

private String getTextContent(Element parent, String tagName) {
  NodeList nl = parent.getElementsByTagName(tagName);
  if (nl.getLength() > 0) {
    Element e = (Element) nl.item(0);
    Node child = e.getFirstChild();
    return (child != null) ? child.getNodeValue() : "";
  }
  return "";
}

DOM 建立寫入:writeXMLFile()

private void writeXMLFile(String outFile) throws Exception {
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  Document doc = db.newDocument();

  Element root = doc.createElement("學生花名冊");
  doc.appendChild(root);

  for (StudentBean bean : studentVector) {
    Element stu = doc.createElement("學生");
    stu.setAttribute("性別", bean.getSex());
    root.appendChild(stu);

    appendElement(doc, stu, "姓名", bean.getName());
    appendElement(doc, stu, "年齡", String.valueOf(bean.getAge()));
    appendElement(doc, stu, "電話", bean.getPhone());
  }

  try (FileOutputStream fos = new FileOutputStream(outFile);
       OutputStreamWriter osw = new OutputStreamWriter(fos, "GB2312")) {
    ((org.apache.crimson.tree.XmlDocument) doc).write(osw, "GB2312");
  }
}

private void appendElement(Document doc, Element parent, String tag, String text) {
  Element e = doc.createElement(tag);
  e.appendChild(doc.createTextNode(text));
  parent.appendChild(e);
}

關鍵依賴與環境

  • JDK 1.3.1+ / 1.4.0 測試通過。
  • XML 解析器:Apache Crimson (org.apache.crimson.tree.XmlDocument 用於寫入編碼)。
  • 匯入套件:javax.xml.parsers, org.w3c.dom, java.io, java.util。

執行流程

  1. 建立 Vector<StudentBean> 儲存資料。
  2. 呼叫 readXMLFile("Input.xml") 解析填充。
  3. 呼叫 writeXMLFile("Output.xml") 序列化輸出。
  4. 對比 Input/Output 驗證正確性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved