Dom4JReader
流程:
1、获取要解析的文件对象 File
2、获取解析器
3、通过解析器将文件对象转换成Document对象
4、得到Document对象的根元素
5、得到根元素的子元素
6、遍历,得到子元素的名和文本值
public static void main(String[] args) throws Exception {
// 1、获取要解析的文件对象 File
File file = new File("src/test.xml");
// 2、获取解析器
SAXReader reader = new SAXReader();
// 3、通过解析器将文件对象转换成Document对象
Document document = reader.read(file);
// 4、得到Document对象的根元素
Element root = document.getRootElement();
// 5、得到根元素的子元素
Iterator<Element> iter = root.elementIterator();
// 6、遍历,得到子元素的名和文本值
while(iter.hasNext()) {
Element element = iter.next();
System.out.println(element.getName() + "--" + element.getStringValue());
}
}
Dom4JWriter
1、使用DocumentHelper来创建 Document对象
2、创建元素并设置关系
3、设置文本
4、创建格式化输出器
5、输出到文件
6、写出
public static void main(String[] args) throws Exception {
// 使用DocumentHelper来创建 Document对象
Document document = DocumentHelper.createDocument();
// 创建元素并设置关系
Element person = document.addElement("person");
Element name = person.addElement("name");
Element age = person.addElement("age");
// 设置文本
name.setText("shsxt");
age.setText("10");
// 创建格式化输出器
OutputFormat of = OutputFormat.createPrettyPrint();
of.setEncoding("utf-8");
// 输出到文件
File file = new File("src/outputdom4j.xml");
XMLWriter writer = new XMLWriter(new FileOutputStream(new File(file.getAbsolutePath())),of);
// 写出
writer.write(document);
writer.flush();
writer.close();
}
Dom解析
1、建 立 DocumentBuilderFactory,解析工厂
2、建立DocumentBuilder,得到分析器
3、将要被解析xml文件转换成Document文档
4、解析指定节点
public static void main(String[] args) throws Exception {
// 1、建 立 DocumentBuilderFactory,解析工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 2、建立DocumentBuilder,得到分析器
DocumentBuilder builder = factory.newDocumentBuilder();
// 3、将要被解析xml文件转换成Document文档
Document document = builder.parse("src/test.xml");
// 4、解析指定节点
NodeList root = document.getElementsByTagName("People"); // 根元素 People
// 遍历根节点
for(int i = 0; i < root.getLength(); i++) {
NodeList childNodes = root.item(i).getChildNodes();
// 遍历子元素
for(int j = 0; j < childNodes.getLength(); j++) {
Node user = childNodes.item(j);
// 得到标签的名称
// String userName = user.getNodeName(); // user
// 得到user标签的子节点
NodeList userChild = user.getChildNodes();
// 遍历
for (int a = 0; a <userChild.getLength(); a++) {
System.out.println("标签名:" + userChild.item(a).getNodeName());
System.out.println("文本:" + userChild.item(a).getTextContent());
}
}
}
}
Dom创建Document对象
1, 获取解析器工厂
2, 获取解析器
3, 创建文档
4, 创建元素、设置关系
5, 获得变压器工厂
6, 设置编码
7, 创建带有DOM节点的新输入源,充当转换Source树的持有者
8, 充当转换结果的持有者
public static void main(String[] args) throws Exception {
//获取解析器工厂
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//获取解析器
DocumentBuilder builder=factory.newDocumentBuilder();
//创建文档
Document doc=builder.newDocument();
//创建元素、设置关系
Element root = doc.createElement("people");
Element person = doc.createElement("person");
Element name = doc.createElement("name");
Element age = doc.createElement("age");
name.appendChild(doc.createTextNode("shsxt"));
age.appendChild(doc.createTextNode("10"));
doc.appendChild(root);
root.appendChild(person);
person.appendChild(name);
person.appendChild(age);
//写出去
// 获得变压器工厂
TransformerFactory tsf=TransformerFactory.newInstance();
Transformer ts=tsf.newTransformer();
//设置编码
ts.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
//创建带有DOM节点的新输入源,充当转换Source树的持有者
DOMSource source=new DOMSource(doc);
//充当转换结果的持有者
File file=new File("src/output.xml");
StreamResult result=new StreamResult(file);
ts.transform(source, result);
}