zoukankan      html  css  js  c++  java
  • Dom4j 操作, 节点查找 添加 删除 修改 。。。xPath

    转:

    Dom4j 操作, 节点查找 添加 删除 修改 。。。xPath

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xj626852095/article/details/17002321

    Dom4j 说明文档:http://blog.csdn.net/xj626852095/article/details/17000741

    xPath说明文档: http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html

    要解析的xml文件

    1. <?xml version="1.0" encoding="UTF-8"?>
    2.  
    3. <书架>
    4. <name="yyyyyyy">
    5. <书名>Java</书名>
    6. <作者>张三</作者>
    7. <打折价>9.9折</打折价>
    8. <售价>只要998</售价>
    9. </书>
    10. <memony="有优惠价">
    11. <书名 name="xxxxx">JavaScript网页开发</书名>
    12. <作者>李四</作者>
    13. <售价>28.00元</售价>
    14. <优惠价>8折</优惠价>
    15. <优惠价>8折</优惠价>
    16. <优惠价>8折</优惠价>
    17. </书>
    18. <user username="kevin" passwd="123456"/>
    19. <user username="xiang" passwd="234567"/>
    20. </书架>
    1. package com.kevin.java;
    2.  
    3. import static org.junit.Assert.*;
    4.  
    5. import java.io.File;
    6. import java.io.FileOutputStream;
    7. import java.io.FileWriter;
    8. import java.io.IOException;
    9. import java.io.OutputStreamWriter;
    10. import java.util.List;
    11.  
    12. import org.dom4j.Document;
    13. import org.dom4j.DocumentException;
    14. import org.dom4j.DocumentHelper;
    15. import org.dom4j.Element;
    16. import org.dom4j.Node;
    17. import org.dom4j.io.OutputFormat;
    18. import org.dom4j.io.SAXReader;
    19. import org.dom4j.io.XMLWriter;
    20. import org.junit.Test;
    21. import org.xml.sax.DocumentHandler;
    22.  
    23. public class Dom4j_Test {
    24.  
    25. //Xpath使用
    26. @Test
    27. public void test4() throws DocumentException, IOException {
    28. SAXReader reader = new SAXReader();
    29. Document document = reader.read(new File("src/book1.xml"));
    30. String bookName = document.selectSingleNode("//书名").getText();
    31. System.out.println("bookName: " + bookName);
    32.  
    33. //查找符合条件的User //BBB[@id='b1'] 注意要有单引号
    34. String username = "kevin";
    35. String passwd = "123456";
    36. Node node = document.selectSingleNode
    37. ("//user[@username='"+username+"' and @passwd='"+passwd+"']");
    38. if(node==null)
    39. System.out.println("不是注册用户");
    40. else
    41. System.out.println("注册用户");
    42.  
    43. }
    44.  
    45. //获得第二本数的书名, 属性值 , 添加售价节点
    46. @Test
    47. public void test1() throws DocumentException, IOException {
    48. SAXReader reader = new SAXReader();
    49. Document document = reader.read(new File("src/book1.xml"));
    50. Element root = document.getRootElement();
    51. Element book = root.elements("书").get(1);
    52. String bookName = book.element("书名").getText();
    53. String bookAttr = book.element("书名").attributeValue("name");
    54. System.out.println("bookName: " + bookName);
    55. System.out.println("bookAttr: " + bookAttr);
    56.  
    57. //添加售价节点
    58. book.addAttribute("memony", "有优惠价");
    59. book.addElement("优惠价").setText("8折");
    60. OutputFormat format = OutputFormat.createPrettyPrint();
    61. format.setEncoding("UTF-8");
    62. XMLWriter writer = new XMLWriter(
    63. new OutputStreamWriter(new FileOutputStream("src/book1.xml")), format);
    64. writer.write(document);
    65. writer.close();
    66. }
    67.  
    68. //指定位置添加
    69. @Test
    70. public void test2() throws DocumentException, IOException {
    71. SAXReader reader = new SAXReader();
    72. Document document = reader.read(new File("src/book1.xml"));
    73. Element book = document.getRootElement().element("书");
    74. List list = book.elements();
    75.  
    76. Element price = DocumentHelper.createElement("打折价");
    77. price.setText("9.9折");
    78. list.add(2, price);
    79.  
    80. OutputFormat format = OutputFormat.createPrettyPrint();
    81. format.setEncoding("UTF-8");
    82. XMLWriter writer = new XMLWriter(
    83. new OutputStreamWriter(new FileOutputStream("src/book1.xml")), format);
    84. writer.write(document);
    85. writer.close();
    86. }
    87.  
    88. //删除节点 更新节点
    89. @Test
    90. public void test3() throws DocumentException, IOException {
    91. SAXReader reader = new SAXReader();
    92. Document document = reader.read(new File("src/book1.xml"));
    93. Element priceTmp = document.getRootElement().element("书").element("打折价");
    94. //删除节点
    95. priceTmp.getParent().remove(priceTmp);
    96.  
    97. Element price = document.getRootElement().element("书").element("售价");
    98. //更新节点
    99. price.setText("只要998");
    100.  
    101. OutputFormat format = OutputFormat.createPrettyPrint();
    102. format.setEncoding("UTF-8");
    103. XMLWriter writer = new XMLWriter(
    104. new OutputStreamWriter(new FileOutputStream("src/book1.xml")), format);
    105. writer.write(document);
    106. writer.close();
    107. }
    108.  
  • 相关阅读:
    PopuWindow和软件盘共存时的设置
    sql语句备份/导入 mysql数据库或表命令
    Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器
    mongodb文档支持的数据类型
    Longest Common Prefix -最长公共前缀
    【JDBC】java程序通过jdbc连接oracle数据库方法
    大型站点技术架构(五)--站点高可用架构
    CF981H K Paths
    带WHERE子句的UPDATE语句
    简单的数据更新
  • 原文地址:https://www.cnblogs.com/libin6505/p/10120468.html
Copyright © 2011-2022 走看看