XML编程实例--对xml配置文件中的数据进行增、删、改、查

前端之家收集整理的这篇文章主要介绍了XML编程实例--对xml配置文件中的数据进行增、删、改、查前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. import java.io.FileOutputStream;
  2. import java.util.List;
  3.  
  4. import org.dom4j.Attribute;
  5. import org.dom4j.Document;
  6. import org.dom4j.DocumentHelper;
  7. import org.dom4j.Element;
  8. import org.dom4j.io.OutputFormat;
  9. import org.dom4j.io.SAXReader;
  10. import org.dom4j.io.XMLWriter;
  11. import org.junit.Test;
  12.  
  13.  
  14.  
  15. public class Dom4jDemo1 {
  16. @Test
  17. public void dom4j1() throws Exception{
  18. //1.创建解析器
  19. SAXReader reader=new SAXReader();
  20. //2.解析xml获取代表整个文档的dom对象
  21. Document dom=reader.read("book.xml");
  22. //3.获取跟元素
  23. Element root= dom.getRootElement();
  24. //4.逐级获取,拿到想要的书名,然后打印出来
  25. String text=root.element("书").element("书名").getText();
  26. System.out.println(text);
  27. }
  28. @Test
  29. public void dom4j2() throws Exception{
  30. //1.创建解析器
  31. SAXReader reader=new SAXReader();
  32. //2.获取代表整个文档的dom对象
  33. Document dom=reader.read("book.xml");
  34. //3.获取根元素
  35. Element root=dom.getRootElement();
  36. //4.获取书名集
  37. List<Element> list=root.elements("书");
  38.  
  39. String bookName=list.get(1).element("书名").getText();
  40. System.out.println(bookName);
  41. }
  42. @Test
  43. public void add() throws Exception{
  44. //获取解析器
  45. SAXReader reader=new SAXReader();
  46. //解析xml获取dom
  47. Document dom=reader.read("book.xml");
  48. //获取根元素
  49. Element root=dom.getRootElement();
  50. //<特价>20.00</特价>
  51. Element price2Ele=DocumentHelper.createElement("特价");
  52. price2Ele.setText("20.00美元");
  53. //把<特价>20.00</特价>挂载到书下
  54. root.element("书").add(price2Ele);
  55. //写回到xml中
  56. // Writer write=new OutputStreamWriter(new FileOutputStream("book.xml"),"UTF-8");
  57. // dom.write(write);
  58. // write.flush();
  59. // write.close();
  60. XMLWriter writer = new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
  61. writer.write(dom);
  62. writer.flush();
  63. writer.close();
  64. }
  65. @Test
  66. public void update()throws Exception{
  67. //获取解析器
  68. SAXReader reader=new SAXReader();
  69. //解析xml获取dom
  70. Document dom=reader.read("book.xml");
  71. //获取跟元素
  72. Element root=dom.getRootElement();
  73. //修改
  74. root.element("书").element("特价").setText("2.0元");
  75. //更新xml
  76. XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
  77. writer.write(dom);
  78. writer.close();
  79. }
  80. @Test
  81. public void delete()throws Exception{
  82. //获取解析器
  83. SAXReader reader=new SAXReader();
  84. //解析xml获取dom
  85. Document dom=reader.read("book.xml");
  86. //获取跟元素
  87. Element root=dom.getRootElement();
  88. //删除特价
  89. Element price2=root.element("书").element("特价");
  90. price2.getParent().remove(price2);
  91. //更新xml
  92. XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
  93. }
  94. @Test
  95. public void add2()throws Exception{
  96. //获取解析器
  97. SAXReader reader=new SAXReader();
  98. //解析xml获取dom
  99. Document dom=reader.read("book.xml");
  100. //获取根元素
  101. Element root=dom.getRootElement();
  102. //凭空创建特价
  103. Element price2Ele=DocumentHelper.createElement("特价");
  104. price2Ele.setText("3.0元");
  105. //插入到指定的位置
  106. List<Element> list=root.element("书").elements();
  107. list.add(1,price2Ele);
  108. //跟新xml
  109. XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
  110. writer.write(dom);
  111. writer.close();
  112. }
  113. @Test
  114. public void attr()throws Exception{
  115. //获取解析器
  116. SAXReader reader=new SAXReader();
  117. //解析xml获取dom
  118. Document dom=reader.read("book.xml");
  119. //获取跟元素
  120. Element root=dom.getRootElement();
  121. //加属性
  122. //创建属性 出版社="xxx出版社";
  123. Element bookEle=root.element("书");
  124. Attribute attr=DocumentHelper.createAttribute(bookEle,"出版社","xxx出版社");
  125. //挂载到父标签
  126. bookEle.add(attr);
  127. bookEle.addAttribute("出版社","xxx出版社");
  128. //查询属性
  129. Attribute attrr=bookEle.attribute("出版社");
  130. String name=attrr.getName();
  131. String value=attrr.getValue();
  132. System.out.println(name+"..."+value);
  133. //修改属性
  134. bookEle.setAttributeValue("出版社","xxx出版社");
  135. //删除属性
  136. Attribute attrr1=bookEle.attribute("出版社");
  137. bookEle.remove(attrr1);
  138. //更新xml
  139. XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
  140. writer.write(dom);
  141. writer.close();
  142. }
  143.  
  144. }

上面的代码需要第三方的jar包dom4j.jar


  1. import javax.xml.parsers.SAXParser;
  2. import javax.xml.parsers.SAXParserFactory;
  3.  
  4. import org.junit.Test;
  5. import org.xml.sax.Attributes;
  6. import org.xml.sax.ContentHandler;
  7. import org.xml.sax.Locator;
  8. import org.xml.sax.SAXException;
  9. import org.xml.sax.XMLReader;
  10.  
  11. public class SaxDemo1 {
  12. //解析方式一
  13. @Test
  14. public void sax1() throws Exception{
  15. //1.创建解析工厂
  16. SAXParserFactory factory=SAXParserFactory.newInstance();
  17. //2.生产解析器
  18. SAXParser parser=factory.newSAXParser();
  19. //3.获取读取器
  20. XMLReader reader=parser.getXMLReader();
  21. //4.设置事件处理器 我采用匿名内部类实现
  22. reader.setContentHandler(new ContentHandler(){
  23. boolean flag=false;
  24. int count=0;
  25. @Override
  26. public void startElement(String uri,String localName,String name,Attributes atts) throws SAXException {
  27. // TODO Auto-generated method stub
  28. //System.out.println("xml文档开始解析了....");
  29. if("书名".equals(name)){
  30. flag=true;
  31. count++;
  32. }
  33. }
  34. @Override
  35. public void characters(char[] ch,int start,int length)
  36. throws SAXException {
  37. // TODO Auto-generated method stub
  38. if(flag && count==2){
  39. System.out.println(new String(ch,start,length));
  40. }
  41. }
  42. @Override
  43. public void endElement(String uri,String name)
  44. throws SAXException {
  45. // TODO Auto-generated method stub
  46. //System.out.println("xml文档解析完成了");
  47. if("书名".equals(name)){
  48. flag=false;
  49. }
  50. }
  51. @Override
  52. public void endDocument() throws SAXException {
  53. // TODO Auto-generated method stub
  54. }
  55.  
  56.  
  57. @Override
  58. public void endPrefixMapping(String prefix) throws SAXException {
  59. // TODO Auto-generated method stub
  60. }
  61.  
  62. @Override
  63. public void ignorableWhitespace(char[] ch,int length)
  64. throws SAXException {
  65. // TODO Auto-generated method stub
  66. }
  67.  
  68. @Override
  69. public void processingInstruction(String target,String data)
  70. throws SAXException {
  71. // TODO Auto-generated method stub
  72. }
  73.  
  74. @Override
  75. public void setDocumentLocator(Locator locator) {
  76. // TODO Auto-generated method stub
  77. }
  78.  
  79. @Override
  80. public void skippedEntity(String name) throws SAXException {
  81. // TODO Auto-generated method stub
  82. }
  83.  
  84. @Override
  85. public void startDocument() throws SAXException {
  86. // TODO Auto-generated method stub
  87. }
  88.  
  89.  
  90. @Override
  91. public void startPrefixMapping(String prefix,String uri)
  92. throws SAXException {
  93. // TODO Auto-generated method stub
  94. }
  95. });
  96. //5.解析xml
  97. reader.parse("book.xml");
  98. }
  99. }


配置文件如下:

book.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <书架>
  4. <书>
  5. <书名>Java就业培训教程</书名>
  6. <特价>3.0元</特价>
  7. <作者>张孝祥</作者>
  8. <售价>39.00元</售价>
  9. </书>
  10. <书>
  11. <书名>JavaScript网页开发</书名>
  12. <作者>张孝祥</作者>
  13. <售价>28.00元</售价>
  14. </书>
  15. </书架>

猜你在找的XML相关文章