message.xml文件位于src目录下的xmldom包中
1.message.xml文件:
<?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.查询数据
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(); } } }
结果:
root : [Element: <root/>] root.getName : root listSize : 2 ID: 1 childUsername:admin childPassword:password1 ID: 2 childUsername:manager childPassword:password2
3.在原有的xml文件中增加数据
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)); }
测试:
XmlTest.add();
结果生成新的xml文件:
<?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文件:
<?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.调用方法:
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.测试:
XmlTest.edit(1);
d.执行后的xml文件:
<?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.执行方法:
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.测试:
XmlTest.del(3);
d.执行后xml文件: