xml解析之(二) - dom4j解析xml
dom4j解析在开发中很多时候都会用到,尤其是当我们要多dom元素进行增删改的操作的时候,查询的话建议用SAX解析方式
1.先写一个工具类:
public class Dom4jXmlUtils {
/**
* 工具类
* 通过xml的路径得到document对象
* @param path
* @return
* @throws Exception
*/
public static Document getDocument(String path) throws Exception {
//创建一个解析器
SAXReader reader = new SAXReader();
//解析xml文件返回一个document对象
return reader.read(path).getDocument();
}
/**
* 回写出格式漂亮的xml
* @param document
* @param path
* @throws Exception
*/
public static void writerXml(Document document,String path) throws Exception{
//创建一个漂亮xml的格式,可以把格式化xml,使程序员能很好的看懂
OutputFormat format = OutputFormat.createPrettyPrint();
//创建一个xml输出流
XMLWriter writer = new XMLWriter(new FileOutputStream(path),format);
//把内存中的document写进一个xml文件中
writer.write(document);
//关闭流
writer.close();
}
}
2.入门例子
public class Dom4jParseXML {
/**
* dom4j操作xml入门
* @author Mrliu
* @param args
*/
public static void main(String[] args) throws Exception {
String path = "src/person.xml";
//removeElement(path);
//addElement(path);
modifyElement(path);
}
/**
* 把第一个person节点中age节点中的文本设置成44
* @param path
* @throws Exception
*/
public static void modifyElement(String path) throws Exception{
//new一个解析器
SAXReader reader = new SAXReader();
//拿到document文档
Document document = reader.read(path).getDocument();
//拿到跟节点
Element root = document.getRootElement();
Element person = (Element) root.elements().get(0);
Element age = person.element("age");
age.setText("44");
//回写:在内存中修改好了xml文件,然后要把document对象写进xml文件中
OutputFormat format = OutputFormat.createPrettyPrint();
//xml文档漂亮的格式
XMLWriter writer = new XMLWriter(new FileOutputStream(path),format);
writer.write(document);
writer.close();
}
/**
* 删除person标签下的第四个节点
* @param path
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static void removeElement(String path) throws Exception {
//拿到document对象
Document document = Dom4jXmlUtils.getDocument(path);
//拿到根节点
Element root = document.getRootElement();
Element element = (Element) root.elements().get(0);
List
list.remove(4);
//回写
Dom4jXmlUtils.writerXml(document, path);
}
/**
* 添加
* @param path
* @throws Exception
*/
public static void addElement(String path) throws Exception{
//得到document对象
Document document = Dom4jXmlUtils.getDocument(path);
//得到文档的根节点
Element root = document.getRootElement();
//拿到person节点
Element person = (Element) root.elements().get(0);
//拿到person下的子节点
List
//创建一个
Element dog = DocumentHelper.createElement("dog");
//设置文本内容
dog.setText("狼狗");
list.add(4, dog);
//回写
Dom4jXmlUtils.writerXml(document, path);
}
}