XML读写操作

    技术2022-05-20  48

    关键字: jdom saxbuilder

    message.xml文件位于src目录下的xmldom包中 1.message.xml文件: Java代码 <?xml version="1.0" encoding="UTF-8"?>   <root>       <person id="1">           <username>admin</username>           <password>password1</password>       </person>       <person id="2">           <username>manager</username>           <password>password2</password>       </person>   </root>   <?xml version="1.0" encoding="UTF-8"?> <root> <person id="1"> <username>admin</username> <password>password1</password> </person> <person id="2"> <username>manager</username> <password>password2</password> </person> </root> 2.查询数据 Java代码 package xmldom;     import java.io.*;   import java.util.*;   import org.jdom.*;   import org.jdom.input.SAXBuilder;   import org.jdom.output.XMLOutputter;     /**   * xml的增删改查之SAXBuilder   *    * @author Administrator   *    */  public class XmlTest {         // 查询所有的数据       public static void list() throws JDOMException, IOException {           SAXBuilder builder = new SAXBuilder();           String xmlPath = "./src/xmldom/message.xml";           //String xmlPath = "./WebRoot/xml/message.xml";           // 获得文档对象           Document document = builder.build(xmlPath);           // 获得根节点           Element root = document.getRootElement();           List list = root.getChildren();           System.out.println("root : " + root);           System.out.println("root.getName : "+root.getName());           System.out.println("listSize : "+list.size());           Iterator it = list.iterator();           while (it.hasNext()) {               Element e = (Element) it.next();               System.out.println("ID: " + e.getAttributeValue("id"));               System.out.println("childUsername:"+e.getChildText("username"));               System.out.println("childPassword:"+e.getChildText("password"));           }                      //for(int i=0;i<list.size();i++){           //  Element e = (Element)list.get(i);           //  ...           //}       }       public static void main(String[] args) {           try {               XmlTest.list();           } catch (JDOMException e1) {               e1.printStackTrace();           } catch (IOException e1) {               e1.printStackTrace();           }       }   }   package xmldom; import java.io.*; import java.util.*; import org.jdom.*; import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; /** * xml的增删改查之SAXBuilder * * @author Administrator * */ public class XmlTest { // 查询所有的数据 public static void list() throws JDOMException, IOException { SAXBuilder builder = new SAXBuilder(); String xmlPath = "./src/xmldom/message.xml"; //String xmlPath = "./WebRoot/xml/message.xml"; // 获得文档对象 Document document = builder.build(xmlPath); // 获得根节点 Element root = document.getRootElement(); List list = root.getChildren(); System.out.println("root : " + root); System.out.println("root.getName : "+root.getName()); System.out.println("listSize : "+list.size()); Iterator it = list.iterator(); while (it.hasNext()) { Element e = (Element) it.next(); System.out.println("ID: " + e.getAttributeValue("id")); System.out.println("childUsername:"+e.getChildText("username")); System.out.println("childPassword:"+e.getChildText("password")); } //for(int i=0;i<list.size();i++){ // Element e = (Element)list.get(i); // ... //} } public static void main(String[] args) { try { XmlTest.list(); } catch (JDOMException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } } } 结果: Java代码 root : [Element: <root/>]   root.getName : root   listSize : 2  ID: 1  childUsername:admin   childPassword:password1   ID: 2  childUsername:manager   childPassword:password2   root : [Element: <root/>] root.getName : root listSize : 2 ID: 1 childUsername:admin childPassword:password1 ID: 2 childUsername:manager childPassword:password2 3.在原有的xml文件中增加数据 Java代码 public static void add() throws JDOMException, FileNotFoundException,IOException {       SAXBuilder builder = new SAXBuilder();       String xmlPath = "./src/xmldom/message.xml";       Document document = builder.build(xmlPath);              //获得根节点       Element root = document.getRootElement();              //创建节点person       Element element = new Element("person");              //给person节点添加属性id       element.setAttribute("id""3");              //给person节点添加子节点并赋值       element.addContent(new Element("username").setText("hello"));       element.addContent(new Element("password").setText("woerld"));              //给父节点添加person子节点       root.addContent(element);         XMLOutputter output = new XMLOutputter();       output.output(document, new FileOutputStream(xmlPath));   }       public static void add() throws JDOMException, FileNotFoundException,IOException { SAXBuilder builder = new SAXBuilder(); String xmlPath = "./src/xmldom/message.xml"; Document document = builder.build(xmlPath); //获得根节点 Element root = document.getRootElement(); //创建节点person Element element = new Element("person"); //给person节点添加属性id element.setAttribute("id", "3"); //给person节点添加子节点并赋值 element.addContent(new Element("username").setText("hello")); element.addContent(new Element("password").setText("woerld")); //给父节点添加person子节点 root.addContent(element); XMLOutputter output = new XMLOutputter(); output.output(document, new FileOutputStream(xmlPath)); } 测试: Java代码 XmlTest.add();   XmlTest.add(); 结果生成新的xml文件: Java代码 <?xml version="1.0" encoding="UTF-8"?>   <root>       <person id="1">           <username>admin</username>           <password>password1</password>       </person>       <person id="2">           <username>manager</username>           <password>password2</password>       </person>       <person id="3">           <username>hello</username>           <password>woerld</password>       </person>   </root>   <?xml version="1.0" encoding="UTF-8"?> <root> <person id="1"> <username>admin</username> <password>password1</password> </person> <person id="2"> <username>manager</username> <password>password2</password> </person> <person id="3"> <username>hello</username> <password>woerld</password> </person> </root> 4.修改xml中数据 a.修改前xml文件: Java代码 <?xml version="1.0" encoding="UTF-8"?>   <root>       <person id="1">           <username ip="1111111">admin</username>           <password>admin</password>       </person>       <person id="2">           <username>manager</username>           <password>password2</password>       </person>       <person id="3">           <username>hello</username>           <password>woerld</password>       </person>   </root>   <?xml version="1.0" encoding="UTF-8"?> <root> <person id="1"> <username ip="1111111">admin</username> <password>admin</password> </person> <person id="2"> <username>manager</username> <password>password2</password> </person> <person id="3"> <username>hello</username> <password>woerld</password> </person> </root> b.调用方法: Java代码 public static void edit(int id) throws JDOMException,               FileNotFoundException, IOException {           SAXBuilder builder = new SAXBuilder();           Document document = builder.build("./src/xmldom/message.xml");           Element root = document.getRootElement();             List list = root.getChildren();           Iterator it = list.iterator();           for (int i = 0; i < list.size(); i++) {               Element e = (Element) it.next();               System.out.println("==============" + e.getAttributeValue("id"));               if (Integer.parseInt(e.getAttributeValue("id")) == id) {                   e.getChild("username").setText("xiaoma");                   e.getChild("username").setAttribute("ip""66666666666");                   e.getChild("password").setText("xiaoma");                 }           }           XMLOutputter output = new XMLOutputter();           output.output(document,                   new FileOutputStream("./src/xmldom/message.xml"));       }   public static void edit(int id) throws JDOMException, FileNotFoundException, IOException { SAXBuilder builder = new SAXBuilder(); Document document = builder.build("./src/xmldom/message.xml"); Element root = document.getRootElement(); List list = root.getChildren(); Iterator it = list.iterator(); for (int i = 0; i < list.size(); i++) { Element e = (Element) it.next(); System.out.println("==============" + e.getAttributeValue("id")); if (Integer.parseInt(e.getAttributeValue("id")) == id) { e.getChild("username").setText("xiaoma"); e.getChild("username").setAttribute("ip", "66666666666"); e.getChild("password").setText("xiaoma"); } } XMLOutputter output = new XMLOutputter(); output.output(document, new FileOutputStream("./src/xmldom/message.xml")); } c.测试: Java代码 XmlTest.edit(1);   XmlTest.edit(1); d.执行后的xml文件: Java代码 <?xml version="1.0" encoding="UTF-8"?>   <root>       <person id="1">           <username ip="66666666666">xiaoma</username>           <password>xiaoma</password>       </person>       <person id="2">           <username>manager</username>           <password>password2</password>       </person>       <person id="3">           <username>hello</username>           <password>woerld</password>       </person>   </root>   <?xml version="1.0" encoding="UTF-8"?> <root> <person id="1"> <username ip="66666666666">xiaoma</username> <password>xiaoma</password> </person> <person id="2"> <username>manager</username> <password>password2</password> </person> <person id="3"> <username>hello</username> <password>woerld</password> </person> </root> 5.删除xml中记录 a.删除前xml文件如上 b.执行方法: Java代码 public static void del(int id) throws JDOMException, FileNotFoundException,               IOException {           SAXBuilder builder = new SAXBuilder();           Document document = builder.build("./src/xmldom/message.xml");           Element root = document.getRootElement();             List list = root.getChildren();           Iterator it = list.iterator();             for (int i = 0; i < list.size(); i++) {               Element e = (Element) it.next();               if (Integer.parseInt(e.getAttributeValue("id")) == id) {                   root.removeContent(e);                   break;               }           }           // 文件处理           XMLOutputter out = new XMLOutputter();           out.output(document, new FileOutputStream("./src/xmldom/message.xml"));       }   public static void del(int id) throws JDOMException, FileNotFoundException, IOException { SAXBuilder builder = new SAXBuilder(); Document document = builder.build("./src/xmldom/message.xml"); Element root = document.getRootElement(); List list = root.getChildren(); Iterator it = list.iterator(); for (int i = 0; i < list.size(); i++) { Element e = (Element) it.next(); if (Integer.parseInt(e.getAttributeValue("id")) == id) { root.removeContent(e); break; } } // 文件处理 XMLOutputter out = new XMLOutputter(); out.output(document, new FileOutputStream("./src/xmldom/message.xml")); } c.测试: Java代码 XmlTest.del(3);   XmlTest.del(3); d.执行后xml文件: Java代码 <?xml version="1.0" encoding="UTF-8"?>   <root>       <person id="1">           <username ip="66666666666">xiaoma</username>           <password>xiaoma</password>       </person>       <person id="2">           <username>manager</username>           <password>password2</password>       </person>          </root>  

    最新回复(0)