使用dom4j操作xml实现增删改查
来源:互联网 发布:网络鲜花店 深圳 编辑:程序博客网 时间:2024/05/22 03:49
dom4j提供了一套操作xml文档的API,下面我们就实现一下最基本的增删改查操作。
先看下最开始的xml文档
<?xml version="1.0" encoding="utf-8"?><students> <student> <name minzu="yyy">诗展</name> <id>1</id> <age>22</age> </student> <student> <name minzu="hanzu">嘿嘿</name> <id>2</id> <age>23</age> </student> </students>
1:查找,dom4j不能直接查找某个标签,不像html dom操作一样有getElementById之类的函数,他查找某个标签,只能从根结点开始遍历,知道查找到我们需要的标签,所以这点dom4j用起来很繁琐。下面是代码:
//读取某个标签下的子标签static void readXml() throws DocumentException{ SAXReader reader = new SAXReader(); Document document = reader.read(new File("src/student.xml")); //取得根结点 Element root = document.getRootElement(); //取得根结点下面的所有student结点 Element e1 = (Element) root.elements("student").get(1); //取得student结点下面的name结点 String name = e1.element("name").getText(); //取得name结点的属性结点 String minzu = e1.element("name").attributeValue("minzu"); System.out.println(name); System.out.println(minzu);}
我们看到的输出结果是:
嘿嘿
hanzu
2:实现添加标签到末尾,我们只需要取得父结点,然后调用父结点的addElement(String name)就可以了。
//写入末尾static void writeXml() throws DocumentException, IOException{ SAXReader reader = new SAXReader();Document document = reader.read(new File("src/student.xml")); //要写入的内容,在students标签的第二个student标签内写入address属性,并且赋值为泉州Element student = (Element) document.getRootElement().elements("student").get(1);//插入标签,且设置值student.addElement("address").setText("泉州");OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");//FileOutputStream的编码也是按照format设置的字符集进行编码XMLWriter writer = new XMLWriter( new FileOutputStream( "src/student.xml" ), format ); writer.write( document); writer.close();}更新后的xml文档,我们可以看到多了一个address标签
<?xml version="1.0" encoding="utf-8"?><students> <student> <name minzu="yyy">诗展</name> <id>1</id> <age>22</age> </student> <student> <name minzu="hanzu">嘿嘿</name> <id>2</id> <age>23</age> <address>泉州</address> </student> </students>
3:实现插入到特定位置,dom4j没有insertbefore类似的方法,要实现插入到特定位置,需要取得结点下的所有子结点的list集合,然后修改list集合,实现特定位置插入。
//往指定位置插入新的结点,dom4j中没有insertbefore方法,要在指定位置插入,必须取得父节点//的elements集合,然后修改elements集合,实现指定位置插入static void insertToXml() throws DocumentException, IOException{SAXReader reader = new SAXReader();Document document = reader.read(new File("src/student.xml"));//得到第二个student标签Element student = (Element) document.getRootElement().elements("student").get(1);List list = student.elements(); //得到所有子结点[name,id,age]//创建新的结点Element addressnode = DocumentHelper.createElement("address");addressnode.setText("泉州");//插入新的结点,list变成了[name,address,id,age],原来1后面的元素往后移动了一个位置list.add(1,addressnode);//重新写入//如果我们的xml编码格式为gb2312的话,那么字符集应该设置成format.setEncoding("gb2312");//也就是xml的字符集和匹配器设置的字符集得一致OutputFormat format = OutputFormat.createPrettyPrint();//这里指定的格式要和xml文档的编码格式一致,否则会出现乱码format.setEncoding("utf-8");//FileOutputStream的编码也是按照format设置的字符集进行编码XMLWriter writer = new XMLWriter( new FileOutputStream( "src/student.xml" ), format ); //写入 writer.write( document); //关闭 writer.close();}
4:实现删除
//删除xml中的结点static void delete() throws DocumentException, IOException{SAXReader reader = new SAXReader(); Document document = reader.read(new File("src/student.xml")); List studentlist = document.getRootElement().elements("student"); Element student2 = (Element) studentlist.get(1); //取得所有属性 List attributes = student2.elements(); Element e = (Element) attributes.get(1); //实现删除,取得父亲,删除自己 e.getParent().remove(e); OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");XMLWriter writer = new XMLWriter( new FileOutputStream( "src/student.xml" ), format ); writer.write( document); writer.close();}
5:实现更新
static void update() throws DocumentException, IOException{SAXReader reader = new SAXReader(); Document document = reader.read(new File("src/student.xml")); List studentlist = document.getRootElement().elements("student"); Element student2 = (Element) studentlist.get(1); //取得所有属性 List attributes = student2.elements(); Element e = (Element) attributes.get(1); //更新其中的文本内容 e.setText("222"); OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");XMLWriter writer = new XMLWriter( new FileOutputStream( "src/student.xml" ), format ); writer.write( document); writer.close(); }
- 使用dom4j操作xml实现增删改查
- Dom4j对XML文档的增删改查操作
- java操作xml之dom4j的增删改查
- java 使用DOM4J对XML文件进行增删改查操作
- flex 操作xml 实现增删改查
- flex 操作xml 实现增删改查
- 使用dom4j对XML文件进行增删改查
- 使用Dom4j对XML进行增删改查
- 使用dom4j解析xml与增删改查
- 使用dom4j工具包实现对xml文件的增删改查和乱码问题的处理
- dom4j解析xml增删改查
- Dom4j 对XML增删改查
- XML(五)dom4j增删改查
- dom4j解析XML之【增删改查】
- dom4j实现增删改查功能
- DOM4J的使用(DOM4J对XML的解析即增删改查)
- Dom4j的增删改查简单使用
- xml实现增删查改
- spring基础
- 数据结构-二叉树的三种遍历
- js读取xml文件并获取文件内容
- Ruby中require、load和include区别
- LAMP 安装
- 使用dom4j操作xml实现增删改查
- VC菜菜鸟-创建多线程任务HelloWorld
- 毕业一年
- WebGL自学课程(4):WebGL矩阵、Camera基础操作
- c++基础知识(容易面试到的)
- 函数重载与匹配
- 类和对象
- 后悔过去,不如奋斗将来
- Qt4 关于在工具栏添加和删除按钮QToolButton