版权声明:学习之路,任重道远 https://blog.csdn.net/weixin_43359405/article/details/83930541
代码如下:
package com.briup.DOMXML;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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;
public class DOMXMLTest {
private List<Student> list;
private String Address[] = { "湖南", "上海", "湖北", "新疆", "北京", "天津", "河北" };
private String Name[] = { "张三", "李四", "小米", "小明", "王五", "胡六", "利利" };
public DOMXMLTest() {
this.list = new ArrayList<Student>();
}
public void FileWriterStudentXML(String address) {
// /树结构的建立xml文件
// /第一步:建立一个文件解析工厂
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// /第二步:建立一个组件文件
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
// /第三步:建立一个文件
Document dcm = db.newDocument();
// /创建一个根目录
Element stus = dcm.createElement("stus");
dcm.appendChild(stus);
/*
* // /第三步:获取个体 Element stu = dcm.createElement("stu");
* stus.appendChild( stu ); // /第四步:获取stu的属性 stu.setAttribute("id",
* "t1"); stu.setAttribute("name", "张三"); ///第五步:获取子标签 Element child
* = dcm.createElement("address"); child.setTextContent("湖南");
* stu.appendChild( child );
*/
// /获取10个个体
for (int i = 0; i < 10; i++) {
// /新建一个个体
Element stu = dcm.createElement("stu");
stus.appendChild(stu);
// /第四步:获取stu的属性
stu.setAttribute("id", "t" + i + 1);
stu.setAttribute("name",
Name[(int) (Math.random() * Name.length)]);
// /第五步:获取子标签
Element child = dcm.createElement("address");
child.setTextContent(Address[(int) (Math.random() * Address.length)]);
stu.appendChild(child);
}
// Text ContentAddress = dcm.createTextNode("湖南");
// child.appendChild( ContentAddress );
// /开始组件
TransformerFactory tff = TransformerFactory.newInstance();
Transformer tff2 = tff.newTransformer();
tff2.transform(new DOMSource(dcm), new StreamResult(new File(
address)));
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}
public void SaveDataatList(String Address) {
Student stu = null;
try {
// /创建一个dom的解析工厂
DocumentBuilderFactory domparsefactory = DocumentBuilderFactory
.newInstance();
// /创建一个dom的解析
DocumentBuilder domparse = domparsefactory.newDocumentBuilder();
// /新建解析文件xml
File file = new File(Address);
Document parse = domparse.parse(file);
// /保存属性的根节点
NodeList fatherNode = parse.getElementsByTagName("stu");
for (int i = 0; i < fatherNode.getLength(); i++) {
// /读取每一个节点
Element fatherElement = (Element) fatherNode.item(i);
stu = new Student();
// /获取id和money的属性值
String id = fatherElement.getAttribute("id").trim();
stu.setId(id);
String name = fatherElement.getAttribute("name").trim();
stu.setName(name);
// /获取子属性的值
NodeList childNode = fatherElement.getChildNodes();
for (int j = 0; j < childNode.getLength(); j++) {
if (childNode.item(j).getNodeType() == 1) {
Element childElement = (Element) childNode.item(j);
String address = childElement.getFirstChild().getNodeValue();
stu.setAddress(address);
}
}
list.add(stu);
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void printList() {
System.out.println("总共存在student:" + list.size());
for (int i = 0; i < list.size(); i++)
System.out.println(list.get(i).toString());
}
public static void main(String[] args) {
String address = "src/com/briup/DOMXML/Stus.xml";
DOMXMLTest te = new DOMXMLTest();
// /组件一个Stus.xml文件
te.FileWriterStudentXML(address);
// /保存数据到list中
te.SaveDataatList(address);
// /打印数据
te.printList();
}
}
StusXml文件自动创建:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<stus>
<stu id="t01" name="小明">
<address>湖北</address>
</stu>
<stu id="t11" name="小明">
<address>天津</address>
</stu>
<stu id="t21" name="胡六">
<address>湖南</address>
</stu>
<stu id="t31" name="李四">
<address>湖南</address>
</stu>
<stu id="t41" name="小明">
<address>河北</address>
</stu>
<stu id="t51" name="王五">
<address>湖北</address>
</stu>
<stu id="t61" name="李四">
<address>河北</address>
</stu>
<stu id="t71" name="王五">
<address>天津</address>
</stu>
<stu id="t81" name="王五">
<address>新疆</address>
</stu>
<stu id="t91" name="胡六">
<address>河北</address>
</stu>
</stus>
StudentJava文件:
package com.briup.DOMXML;
public class Student {
private String id;
private String name;
private String address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", address=" + address
+ "]";
}
public Student(String id, String name, String address) {
this.id = id;
this.name = name;
this.address = address;
}
public Student() {
}
}