Java 利用dom方式讀取、創(chuàng)建xml詳解及實(shí)例代碼
更新時(shí)間:2017年03月15日 15:13:07 投稿:lqh
這篇文章主要介紹了Java 利用dom方式讀取、創(chuàng)建xml的相關(guān)資料,需要的朋友可以參考下
Java 利用dom方式讀取、創(chuàng)建xml詳解
1.創(chuàng)建一個(gè)接口
XmlInterface.Java
public interface XmlInterface
{
/**
*
建立XML文檔
*
@param fileName 文件全路徑名稱
*/
public void createXml(String
fileName);
/**
*
解析XML文檔
*
@param fileName 文件全路徑名稱
*/
public void parserXml(String
fileName);
}
接口實(shí)現(xiàn)
XmlImpl.java
package com.test.xml;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
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.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class XmlImpl implements XmlInterface{
private Document
document;
public void init()
{
try {
DocumentBuilderFactory
factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder
builder = factory.newDocumentBuilder();
this.document
= builder.newDocument();
} catch (ParserConfigurationException
e) {
System.out.println(e.getMessage());
}
}
public void createXml(String
fileName) {
Element
root = this.document.createElement("scores");
this.document.appendChild(root);
Element
employee = this.document.createElement("employee");
Element
name = this.document.createElement("name");
name.appendChild(this.document.createTextNode("wangchenyang"));
employee.appendChild(name);
Element
sex = this.document.createElement("sex");
sex.appendChild(this.document.createTextNode("m"));
employee.appendChild(sex);
Element
age = this.document.createElement("age");
age.appendChild(this.document.createTextNode("26"));
employee.appendChild(age);
root.appendChild(employee);
TransformerFactory
tf = TransformerFactory.newInstance();
try {
Transformer
transformer = tf.newTransformer();
DOMSource
source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter
pw = new PrintWriter(new FileOutputStream(fileName));
StreamResult
result = new StreamResult(pw);
transformer.transform(source,
result);
System.out.println("生成XML文件成功!");
} catch (TransformerConfigurationException
e) {
System.out.println(e.getMessage());
} catch (IllegalArgumentException
e) {
System.out.println(e.getMessage());
} catch (FileNotFoundException
e) {
System.out.println(e.getMessage());
} catch (TransformerException
e) {
System.out.println(e.getMessage());
}
}
public void parserXml(String
fileName) {
try {
DocumentBuilderFactory
dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder
db = dbf.newDocumentBuilder();
Document
document = db.parse(fileName);
NodeList
employees = document.getChildNodes();
for (int i
= 0;
i < employees.getLength(); i++) {
Node
employee = employees.item(i);
NodeList
employeeInfo = employee.getChildNodes();
for (int j
= 0;
j < employeeInfo.getLength(); j++) {
Node
node = employeeInfo.item(j);
NodeList
employeeMeta = node.getChildNodes();
for (int k
= 0;
k < employeeMeta.getLength(); k++) {
System.out.println(employeeMeta.item(k).getNodeName()
+ ":" +
employeeMeta.item(k).getTextContent());
}
}
}
System.out.println("解析完畢");
} catch (FileNotFoundException
e) {
System.out.println(e.getMessage());
} catch (ParserConfigurationException
e) {
System.out.println(e.getMessage());
} catch (SAXException
e) {
System.out.println(e.getMessage());
} catch (IOException
e) {
System.out.println(e.getMessage());
}
}
}
測(cè)試
public class Main
{
public static void main(String
args[]){
XmlImpl
dd=new XmlImpl();
String
str="D:/grade.xml";
dd.init();
dd.createXml(str); //創(chuàng)建xml
dd.parserXml(str); //讀取xml
}
}
結(jié)果
生成xml
<?xml version="1.0" encoding="GB2312"?> <scores> <employee> <name>wangchenyang</name> <sex>m</sex> <age>26</age> </employee> </scores>
讀取xml
生成XML文件成功! #text: name:wangchenyang #text: sex:m #text: age:26 #text: 解析完畢
感謝閱讀,希望能幫到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Java基礎(chǔ)教程之對(duì)象的方法與數(shù)據(jù)成員
這篇文章主要介紹了Java基礎(chǔ)教程之對(duì)象的方法與數(shù)據(jù)成員,本文講解對(duì)象的方法與數(shù)據(jù)成員相關(guān)知識(shí),因?yàn)閖ava是面向?qū)ο笳Z(yǔ)言,本文的知識(shí)都是經(jīng)常要用到的,需要的朋友可以參考下2014-08-08
基于Java實(shí)現(xiàn)ssh命令登錄主機(jī)執(zhí)行shell命令過(guò)程解析
這篇文章主要介紹了基于Java實(shí)現(xiàn)ssh命令登錄主機(jī)執(zhí)行shell命令過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
springboot如何實(shí)現(xiàn)導(dǎo)入其他配置類
這篇文章主要介紹了springboot如何實(shí)現(xiàn)導(dǎo)入其他配置類問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11

