dom4j使用selectNodes搜索xml节点

第一步:引用jar包

   dom4j-1.6.1.jar (http://www.dom4j.org/下载最新版)

   jaxen-1.1-beta-6.jar (http://jaxen.codehaus.org/ 这是官网,点击下载链接好像不行,可以去csdn)

   支持XPath必须的,否则会报错java.lang.NoClassDefFoundError: org/jaxen/JaxenException

第二步:XPath基本语法

   http://www.w3school.com.cn/xpath/index.asp

第三步:实例

 

users.xml

 
  1. <? xml version="1.0" encoding="UTF-8" ?>

  2. - < Users >

  3. - < User id =" 0 " >

  4. < Name > youchuancong </ Name >

  5. < Age > 23 </ Age >

  6. </ User >

  7. - < User id =" 1 " >

  8. < Name > cindy </ Name >

  9. < Age > 23 </ Age >

  10. </ User >

  11. </ Users >

 

XMLTools.java 

 
  1. import java.io.File;

  2. import java.io.FileWriter;

  3. import java.io.IOException;

  4. import java.util.Iterator;

  5. import java.util.List;

  6.  
  7. import org.dom4j.Document;

  8. import org.dom4j.DocumentException;

  9. import org.dom4j.DocumentHelper;

  10. import org.dom4j.Element;

  11. import org.dom4j.io.SAXReader;

  12. import org.dom4j.io.XMLWriter;

  13.  
  14. public class XMLTools {

  15. public void creat(String filename){//创建xml文件

  16. Document document = DocumentHelper.createDocument();

  17. Element usersElement = document.addElement("Users");

  18.  
  19. Element userElement = usersElement.addElement("User");

  20. userElement.addAttribute("id", "0");

  21.  
  22. Element nameElement=userElement.addElement("Name");

  23. nameElement.setText("youchuancong");

  24.  
  25. Element ageElement=userElement.addElement("Age");

  26. ageElement.setText("23");

  27.  
  28. Element userElement1 = usersElement.addElement("User");

  29. userElement1.addAttribute("id", "1");

  30.  
  31. Element nameElement1=userElement1.addElement("Name");

  32. nameElement1.setText("cindy");

  33.  
  34. Element ageElement1=userElement1.addElement("Age");

  35. ageElement1.setText("23");

  36.  
  37. try{

  38. XMLWriter output = new XMLWriter(

  39. new FileWriter( new File(filename) ));

  40. output.write( document );

  41. output.close();

  42. }

  43. catch(IOException e){System.out.println(e.getMessage());}

  44. }

  45.  
  46. public void read(String filename,String id) throws Exception{//根据id读出学生姓名

  47. SAXReader saxReader = new SAXReader();

  48. Document document = saxReader.read(new File(filename));

  49. Element e = (Element)document.selectSingleNode("/Users/User[@id='"+id+"']");

  50. Element name = e.element("Name");

  51. System.out.println("Name:"+name.getText());

  52.  
  53. }

  54. public void readName(String filename) throws Exception{//读出所有学生的学生姓名

  55. SAXReader saxReader = new SAXReader();

  56. Document document = saxReader.read(new File(filename));

  57. List users = document.selectNodes("//Name");

  58. Iterator it = users.iterator();

  59. while(it.hasNext()){

  60. Element e = (Element)it.next();

  61. System.out.println("Name:"+e.getText());

  62. }

  63. }

  64. public void addUser(String filename,String id,String name,String age) throws Exception{

  65. SAXReader saxReader = new SAXReader();//添加信息

  66. Document document = saxReader.read(new File(filename));

  67. Element e = (Element)document.selectSingleNode("/Users");

  68. // Element e = document.getRootElement();

  69. Element user = e.addElement("User");

  70. user.setAttributeValue("id", id);

  71. user.addElement("Name").setText(name);

  72. user.addElement("Age").setText(age);

  73. XMLWriter output = new XMLWriter(

  74. new FileWriter( new File(filename) ));

  75. output.write( document );

  76. output.close();

  77. }

  78. public void readUser(String filename) throws Exception{//读出所有学生的基本信息

  79. SAXReader saxReader = new SAXReader();

  80. Document document = saxReader.read(new File(filename));

  81. List l = document.selectNodes("/Users/User");

  82. Iterator it = l.iterator();

  83. while(it.hasNext()){

  84. Element e = (Element)it.next();

  85. System.out.println("id:"+e.attributeValue("id"));

  86. Element name = e.element("Name");

  87. System.out.println("name:"+name.getText());

  88. Element age = e.element("Age");

  89. System.out.println("age:"+age.getText());

  90. System.out.println("#############################");

  91. }

  92. }

  93. public void delete(String filename,String id) throws Exception{//删除指定id的学生

  94. SAXReader saxReader = new SAXReader();

  95. Document document = saxReader.read(new File(filename));

  96. Element e = (Element)document.selectSingleNode("/Users/User[@id='"+id+"']");

  97. if(e!=null){

  98. Element parent = e.getParent();

  99. parent.remove(e);

  100.  
  101. XMLWriter output = new XMLWriter(

  102. new FileWriter( new File(filename) ));

  103. output.write( document );

  104. output.close();

  105. }

  106. }

  107. public void readAll(String filename) throws Exception{//选取所有节点

  108. SAXReader saxReader = new SAXReader();

  109. Document document = saxReader.read(new File(filename));

  110. List users = document.selectNodes("//*");

  111. Iterator it = users.iterator();

  112. while(it.hasNext()){

  113. Element e = (Element)it.next();

  114. System.out.println("ElementName:"+e.getName()+"||value:"+e.getText());

  115. }

  116. }

  117. public void modify(String filename,String id,String name) throws Exception{//修改指定学号的学生姓名

  118. SAXReader saxReader = new SAXReader();

  119. Document document = saxReader.read(new File(filename));

  120. Element e = (Element)document.selectSingleNode("/Users/User[@id='"+id+"']");

  121. Element n = e.element("Name");

  122. n.setText(name);

  123. XMLWriter output = new XMLWriter(

  124. new FileWriter( new File(filename) ));

  125. output.write( document );

  126. output.close();

  127. }

  128. }

  129.  
 
  1. XMLTest.java

  2. public class XMLTest {

  3. public static void main(String[] args) {

  4. XMLTools xml = new XMLTools();

  5. //xml.creat("users.xml");

  6. try {

  7. //xml.read("users.xml", "0");

  8. //xml.addUser("users.xml", "4", "no", "100");

  9. //xml.readUser("users.xml");

  10. //xml.readName("users.xml");

  11. xml.readAll("users.xml");

  12. //xml.modify("users.xml", "0", "helloworld");

  13. } catch (Exception e) {

  14. // TODO Auto-generated catch block

  15. e.printStackTrace();

  16. }

  17. }

  18. }

 

我在调用selectNodes方法的时候,碰到了一些问题,

String xPath = "//extensionPoint[@name='" + extName + "']";
List<Element> eles = doc.selectNodes(xPath);

上面不加//,得到的eles是一个空的list。如果是根节点可以不加//,这里在w3school有说明的

 

感谢原博客作者

http://blog.csdn.net/youycc/article/details/5736103

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值