Dom方式解析Xml
来源:互联网 发布:md5加密java代码 密钥 编辑:程序博客网 时间:2024/05/17 06:24
初学dom解析xml:Dom方式解析xml文件
1.遍历所有节点 2.查找某一个节点 3.删除节点 4.更新结点 5. 添加节点
//使用dom方式对xml文档进行crud
public class Demo3 {// 指定节点
@Test
public void read1() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/test/java/students.xml");
NodeList list = document.getElementsByTagName("name");
Node node = list.item(1);
String content = node.getTextContent();
System.out.println(content);
}
// 得到xml文档中所有标签
@Test
public void read2() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/test/java/students.xml");
// 得到根结点
Node root = document.getElementsByTagName("students").item(0);
list(root);
}
private void list(Node node) {
if (node instanceof Element) {
System.out.println(node.getNodeName());
}
NodeList list = node.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node child = list.item(i);
list(child);
}
}
// 得到xml文档中标签属性的值
@Test
public void read3() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/test/java/students.xml");
Element student = (Element) document.getElementsByTagName("student")
.item(0);
String value = student.getAttribute("type");
System.out.println(value);
}
// 向xml文档中添加结点
@Test
public void add() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/test/java/students.xml");
// 创建节点
Element address = document.createElement("address");
address.setTextContent("诚德");
// 把创建的节点挂到第一个student
Element student = (Element) document.getElementsByTagName("student")
.item(0);
student.appendChild(address);
// 把更新后的内存写回到xml
TransformerFactory tffactory = TransformerFactory.newInstance();
Transformer tf = tffactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/test/java/students.xml")));
}
// 向xml文档中指定位置添加结点
@Test
public void add2() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/test/java/students.xml");
// 创建节点
Element address = document.createElement("address");
address.setTextContent("诚德");
// 得到参考节点(每二个college)
Element refNode = (Element) document.getElementsByTagName("college")
.item(1);
// 把创建的节点挂到第二个student
Element student = (Element) document.getElementsByTagName("student")
.item(1);
// 往student指定位置插入节点
student.insertBefore(address, refNode);
// 把更新后的内存写回到xml
TransformerFactory tffactory = TransformerFactory.newInstance();
Transformer tf = tffactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/test/java/students.xml")));
}
// 向xml文档中指定位置添加属性
@Test
public void add3() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/test/java/students.xml");
// 把创建的属性挂到第二个student
Element student = (Element) document.getElementsByTagName("student")
.item(1);
// 往student指定位置插入节点
student.setAttribute("type", "好学生");
// 把更新后的内存写回到xml
TransformerFactory tffactory = TransformerFactory.newInstance();
Transformer tf = tffactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/test/java/students.xml")));
}
// 删除指定节点
@Test
public void delete1() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/test/java/students.xml");
// 得到要删除的节点
Element e = (Element) document.getElementsByTagName("college").item(1);
e.getParentNode().removeChild(e);// 得到爸爸删除自己
// 得到要删除的爸爸节点
/*
* Element student = (Element) document.getElementsByTagName("student")
* .item(1);
*/
// 父删除子
// student.removeChild(e);
// 把更新后的内存写回到xml
TransformerFactory tffactory = TransformerFactory.newInstance();
Transformer tf = tffactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/test/java/students.xml")));
}
// 更新节点
@Test
public void update() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/test/java/students.xml");
// 要更新的节点
Element e = (Element) document.getElementsByTagName("college").item(0);
e.setTextContent("更新操作");
// 把更新后的内存写回到xml
TransformerFactory tffactory = TransformerFactory.newInstance();
Transformer tf = tffactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/test/java/students.xml")));
}
刚开通博客,第一次上传,希望可以记录自己学习日志,。
0 0
- dom方式解析xml
- DOM方式解析XML
- DOM方式解析xml
- Dom方式解析Xml
- DOM方式解析XML
- JAVA XML 解析 DOM 方式
- android dom 解析xml方式
- Dom方式创建/解析xml
- DOM的方式解析XML
- DOM方式解析XML配置文件
- Dom方式解析XML详解
- 应用DOM方式解析XML
- 解析XML方式-DOM,SAX
- xml解析-jaxp-dom方式
- 使用DOM方式解析XML
- dom方式解析xml文档
- XML之DOM解析方式
- DOM方式解析XML文件
- linux0.11源代码在gcc4.3.x gcc4.4.x下编译bochs下模拟
- 算法导论第16章 贪心算法-0-1背包问题—动态规划求解
- winnt.h(287): error C2059: 语法错误:“;”
- cookie, sessionStorage and localStorage 之间的区别 与定义; 应用;
- 用GDB调试多线程程序
- Dom方式解析Xml
- JDK自带工具之jmap
- ASIHTTPRequest
- cxf webservice 完整例子
- Java程序员从笨鸟到菜鸟之(十一)多线程讲解
- mysql 如何设置自动增长序列 sequence(一)
- poj1142 Smith Numbers
- 十六进制 字符打印
- Oracle 10g RAC public IP 与 private IP 详解