1 Dom解析:
把整个文档的内容 都读到 内存中,再解析
整个文档的根叫 document
html文档就是一种xml 文件
每一个标签就是 一个 Dom节点
2 DOM解析XML的优点:
因为分配了一个 树形结构,很方便实现增删改
3 DOM解析XML的缺点:
如果解析的文件过大,一次性在内存中分配一个 树形结构,造成内存的溢出.
step1 项目文件夹放xml文件: student.xml
<?xml version="1.0" encoding="UTF-8"?>
<人>
<学生>
<姓名>张三</姓名>
<性别>男</性别>
<年龄>15</年龄>
<爱好>蓝球</爱好>
</学生>
<学生>
<姓名>李四</姓名>
<性别>男</性别>
<年龄>16</年龄>
<爱好>足球</爱好>
</学生>
<学生>
<姓名>小P</姓名>
<性别>男</性别>
<年龄>16</年龄>
<爱好>吃</爱好>
</学生>
</人>
step2 Dom解析
package com.android.andriodM;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class DomParseTest {
//1 获取xml文件节点的内容
@Test
public void domGet() throws Exception{
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("student.xml");
NodeList nodeList = doc.getElementsByTagName("姓名");
//1.1 找到第2个"姓名"标签
Node node = nodeList.item(1);
String content = node.getTextContent();
System.out.println("第2个姓名:"+content);
System.out.println("--------------------");
//1.2 遍历"姓名"标签组
int length = nodeList.getLength();
for (int i = 0; i < length; i++) {
System.out.println("姓名"+i+":"+nodeList.item(i).getTextContent());
}
}
//2 修改xml 文件节点的内容
@Test
public void domSet() throws Exception{
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("student.xml");
NodeList nodeList = doc.getElementsByTagName("姓名");
//1 找到第3个标签,修改节点的内容
Node node = nodeList.item(2);
node.setTextContent("花花");
//2 将修改的内存数据 写到 磁盘中
//内存中的文件
Source xmlSource = new DOMSource(doc);
//磁盘中的目标文件
Result outputTarget = new StreamResult("student.xml");
Transformer transformer = TransformerFactory.newInstance().newTransformer();
//转化
transformer.transform(xmlSource, outputTarget);
}
}
step3 结果
1 获取xml文件节点的内容
2 修改xml 文件节点的内容
版权声明:本文为m0_45877477原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。