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
原创粉丝点击