读写XML文档可以用4种方式,分别是DOM.SAX.JDOM.DOM4J,其中JDOM和DOM4J是框架
xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<Students>
<student id="012">
<name id="01" xx="02">邬国通</name>
<age>12</age>
</student>
<student>
<name >李思慧</name>
</student>
</Students>
JDOM的读XML:
package xml;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
public class JDOM {
public static void main(String[] args) throws Exception{
SAXBuilder builder=new SAXBuilder();//得到SAX解析器
Document document=builder.build("src/xml01.xml");//进行解析
Element students=document.getRootElement();//获取根节点
List studentList=students.getChildren("student");//获取子节点
for(int i=0;i<studentList.size();i++){
Element student=(Element)studentList.get(i);//LIST转为元素
String id=student.getAttributeValue("id");
String name=student.getChildText("name");
System.out.println(name+id);
}
}
}
DOM4J的读操作:
package xml;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class jdom4 {
public static void main(String[] args) throws Exception{
SAXReader saxReader=new SAXReader();//创建SAX解析器
Document document=saxReader.read("src/xml01.xml");//解析
Element rootElement=document.getRootElement();//获取根节点元素
Iterator iter=rootElement.elementIterator();//获取子节点
while(iter.hasNext()){//直到没有才停止
Element studentElement=(Element)iter.next();//下一个节点元素
System.out.println("学号:"+studentElement.attributeValue("id"));
System.out.println("姓名:"+studentElement.elementText("name"));
System.out.println("=========");
}
}
}
DOM4J的写操作:
package xml;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class dom4j {
public static void main(String[] args) {
Document document=DocumentHelper.createDocument();//获取document对象
Element studentElement=document.addElement("student");//创建根元素
studentElement.addAttribute("id", "001");//设置某节点的属性和文字.
studentElement.addAttribute("aa", "xx");//设置某节点的属性和文字.
Element name=studentElement.addElement("name");//添加子节点
name.setText("张三");
Element sex=studentElement.addElement("sex");//添加子节点
sex.setText("男");
Element age=studentElement.addElement("age");//添加子节点
age.setText("20");
OutputFormat format=OutputFormat.createPrettyPrint();//输出
format.setEncoding("UTF-8");
try {
XMLWriter writer=new XMLWriter(new FileOutputStream("src/student3.xml"),format);
writer.write(document);
writer.close();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}