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>
<?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();
- }
- }
- }
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
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));
- }
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();
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>
<?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>
<?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"));
- }
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);
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>
<?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"));
- }
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);
XmlTest.del(3);
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>
- </root>