首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

JDOM对xml的增删节查之SAXBuilder

2012-11-18 
JDOM对xml的增删改查之SAXBuildermessage.xml文件位于src目录下的xmldom包中 1.message.xml文件:Java代码

JDOM对xml的增删改查之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 : rootlistSize : 2ID: 1childUsername:adminchildPassword:password1ID: 2childUsername:managerchildPassword: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>??

热点排行