student.xml:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name>Stone</name>
<age>26</age>
<sex>男</sex>
<address>北京</address>
</student>
<student>
<name>Snow</name>
<age>24</age>
<sex>女</sex>
<address>北京</address>
</student>
</students>
实体类student:
package com.xml;
public class Student
{
String name;
String sex;
String age;
public Student(String name, String sex, String age)
{
// TODO Auto-generated constructor stub
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex = sex;
}
public String getAge()
{
return age;
}
public void setAge(String age)
{
this.age = age;
}
}
package com.xml;
import java.io.File;
import java.io.IOException;
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.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DOMForXml
{
/**
* 获取document对象
*/
public Document getDocument(String path)
{
Document doc = null;
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(new File(path));
}
catch (ParserConfigurationException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SAXException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return doc;
}
/**
* 解析xml
*/
public void parseXml(String path)
{
Document doc = this.getDocument(path);
NodeList nodeList = doc.getElementsByTagName("student");
for (int i = 0; i < nodeList.getLength(); i++)
{
StringBuffer str = new StringBuffer();
str.append("姓名:"
+ doc.getElementsByTagName("name")
.item(i)
.getFirstChild()
.getNodeValue());
str.append(",");
str.append("性别:"
+ doc.getElementsByTagName("sex")
.item(i)
.getFirstChild()
.getNodeValue());
str.append(",");
str.append("年龄:"
+ doc.getElementsByTagName("age")
.item(i)
.getFirstChild()
.getNodeValue());
str.append(",");
System.out.println(str.toString());
}
}
/**
* 保存到文件
*/
public void modifyFile(Document doc,String distFileName)
{
try
{
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource domSource = new DOMSource(doc);
StreamResult sr = new StreamResult(new File("src/student.xml"));
transformer.transform(domSource,sr);
}
catch (TransformerConfigurationException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (TransformerException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* new 一个 student
*/
public void addNode(Student student)
{
Document doc = this.getDocument("src/student.xml");
NodeList nodeList = doc.getElementsByTagName("students");
//1 创建新节点
Node stuNode = doc.createElement("student");
Node nameNode = doc.createElement("name");
nameNode.appendChild(doc.createTextNode(student.getName()));
Node sexNode = doc.createElement("sex");
sexNode.appendChild(doc.createTextNode(student.getSex()));
Node ageNode = doc.createElement("age");
ageNode.appendChild(doc.createTextNode(student.getAge()));
//2 添加
stuNode.appendChild(nameNode);
stuNode.appendChild(sexNode);
stuNode.appendChild(ageNode);
nodeList.item(0).appendChild(stuNode);
//3 保存
this.modifyFile(doc, "src/student.xml");
}
/**
* 删除一个节点
*/
public void deleteNode(String name)
{
Document doc = this.getDocument("src/student.xml");
NodeList nodeList = doc.getElementsByTagName("name");
for(int i=0; i<nodeList.getLength(); i++)
{
String value = nodeList.item(i).getFirstChild().getTextContent();
if(name != null && name.equalsIgnoreCase(value))
{
Node parentNode = nodeList.item(i).getParentNode();
doc.getFirstChild().removeChild(parentNode);
}
modifyFile(doc,"src/student.xml");
}
}
/**
* 修改一个节点
*/
public void updateNode(String name)
{
Document doc = this.getDocument("src/student.xml");
NodeList nodeList = doc.getElementsByTagName("name");
for (int i=0; i<nodeList.getLength(); i++)
{
String value = nodeList.item(i).getFirstChild().getTextContent();
if(name != null && name.equalsIgnoreCase(value))
{
Node parentNode = nodeList.item(i).getParentNode();
NodeList nl = parentNode.getChildNodes();
for (int j=0; j<nl.getLength(); j++)
{
String modifyNode = nl.item(j).getNodeName();
if(modifyNode.equalsIgnoreCase("age"))
{
nl.item(j).getFirstChild().setTextContent("100");
}
}
}
}
this.modifyFile(doc, "src/student.xml");
}
}
分享到:
相关推荐
java dom 解析 xml 实例 介绍w3c中的元素的用法,以及在解析xml过程中用到的API进行详细解释
android为我们提供了多种解析方式,DOM解析,代码操作简单,一直为解析xml文件的一个不错的选择
dom4j解析xml实例,dom4j解析xml实例,dom4j解析xml实例,
JSP基于dom解析xml实例详解.docx
在页面中使用dom节点解析xml文件实例
简单的sax和dom解析xml实例 注意 在android上运行的.
DOM解析XML应用实例(入门经典案例),直接在Myeclipse值导入即可运行
很实用的一个dom解析xml实例,很容易上手
以一个实例来说明DOM解析XML文件的方法与过程。
DOM4J_SAX_DOM_XML的实例DOM4J_SAX_DOM_XML的实例
简单的读取xml,利用dom4j读写xml实例xmldemo
VB读取XML文件的操作实例,演示读取XML各个定义键的值。程序是一个专一读取XML文件的VB类,并没有使用微软的XML.DLL。因此比较有参考价值,很不错。
XML的DOM编程 实例,带有界面,是一个不错的设计哦
解压可以使用 文件放到相同目录就行了。
DOM、JDOM、DOM4J解析XML实例
包括android代码实例以及个人对Dom解析xml文件的总结文档。
Dom4JXMl解析工具制作的Xml入门实例,包含创建、增加节点等操作