package com.tem;
import java.io.IOException;
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.NodeList;
import org.xml.sax.SAXException;
/**
* XML的读取
*
* @author hjx
*
*/
public class XmlDemo1 {
// 读取XML文档数据的方法
public static void readXml() {
try {
// 创建documentBuild对象
DocumentBuilder documentBuild = DocumentBuilderFactory
.newInstance().newDocumentBuilder();
// 定义XML文档的路径
String path = XmlDemo1.class.getResource("/").getPath()
+ "com/tem/MyXml.xml";
// 创建document对象
try {
Document doc = documentBuild.parse(path); // 此时,document对象已经和XML文档建立了关联,可能通过document对象对XML文档进行添加、删除、修改内容的操作。
// 获取users节点下的信息
NodeList nodelist = doc.getElementsByTagName("user");
for (int i = 0; i < nodelist.getLength(); i++) {
Element el = (Element) nodelist.item(i);
System.out.println("用户名称: " + el.getAttribute("name")
+ "用户密码: " + el.getAttribute("pwd"));
}
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 向XML文档中写入数据
public static void writeXML(String name, String pwd) {
// 构造一个DocuemtnBuilder对象
try {
DocumentBuilder documentBuilder = DocumentBuilderFactory
.newInstance().newDocumentBuilder();
// 创建一个Document对象
Document doc = documentBuilder.newDocument();
// 定义XML文档的路径
String path = XmlDemo1.class.getResource("/").getPath()
+ "com/tem/MyXml.xml";
// 建立Document对象与XML文档关联
try {
doc = documentBuilder.parse(path);
// 指定追加节点的父节点
NodeList nodelist = doc.getElementsByTagName("users");
Element eltop = (Element) nodelist.item(0);
// 定义追加的节点名称及其信息
Element elchild = doc.createElement("user");
elchild.setAttribute("name", name);
elchild.setAttribute("pwd", pwd);
// 把子节点添加到父节点下
eltop.appendChild(elchild);
// 保存文档
// 构造一个TransformerFactory 对象
TransformerFactory tf = TransformerFactory.newInstance();
// 构造一个Transformer对象
try {
Transformer trans = tf.newTransformer();
// 设置Transformer的属性
trans.setOutputProperty(OutputKeys.INDENT, "yes");
trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
// 定义XML输出源文档对象
DOMSource dosource = new DOMSource(doc);
// 定义输出路径及名称
StreamResult res = new StreamResult(path);
// 输出XML文档
try {
trans.transform(dosource, res);
System.out.println("输出结束");
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
readXml();
writeXML("zhangsan", "123456789");
}
}
//我的XML的内容
MyXml.xml
<?xml version="1.0" encoding="UTF-8"?>
<sys>
<users>
<user name="demo1" pwd="123456" />
<user name="hjx" pwd="12346" />
</users>
</sys>