非官方的两种解析方式DOM4J和JDOM
三、DOM4J
DOM4J解析xml文件
public class DOM4Jtest {
public static void main(String args[]) {
//1、创建SAXReader对象
SAXReader reader = new SAXReader();
try {
//2、调用read方法直接读取xml Document为dom4j包下的
Document document = reader.read(new File("src/XMLtest/test/student.xml"));
//3、获取根节点 Element为dom4j包下的
Element rootElement = document.getRootElement();
//3、生成Iterator对象
Iterator iterator = rootElement.elementIterator();
while (iterator.hasNext()){
Element student = (Element) iterator.next();
//获取此节点的属性
List<Attribute> attributes = student.attributes();
for (Attribute a:attributes){
System.out.println(a.getName()+"="+a.getValue());
}
//获取此节点的子节点
Iterator child = student.elementIterator();
while(child.hasNext()){
Element c =(Element) child.next();
System.out.println(c.getName()+":"+c.getStringValue());
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
结果
警告是因为java版本
DOM4J创建xml文件
public class DOM4Jtest {
public static void main(String args[]) {
//1、用DocumentHelper的createDocument方法创建Document
Document document = DocumentHelper.createDocument();
//2、使用addElement方法添加元素
Element students = document.addElement("students");
Element student = students.addElement("student");
//3、使用element的方法addAttribute添加结点
student.addAttribute("id", "1");
student.addElement("name").addText("小民");
student.addElement("age").addText("93");
Element student2 = students.addElement("student");
student2.addAttribute("id", "2");
student2.addElement("name").addText("小泽");
student2.addElement("age").addText("13");
File f = new File("DOM4J_student.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
try {
//创建XMLWriter对象用于存储xml文件
XMLWriter writer = new XMLWriter(new FileOutputStream(f), format);
//将上面创建的document写入文件中
writer.write(document);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
生成文件
四、JDOM
JDOM解析xml文件
public class JDOMtest {
public static void main(String args[]) {
//对象均为JDOM2包下的
//1、创建SAXBuilder对象
SAXBuilder builder = new SAXBuilder();
//创建输入流
InputStream in;
try {
in = new FileInputStream("src/XMLtest/test/student.xml");
//2、使用SAXBuilder对象的builder方法创建Document对象
Document build = builder.build(in);
//3、得到根节点
Element rootElement = build.getRootElement();
//4、得到根节点的子结点
List<Element> children = rootElement.getChildren();
for (Element book:children){
System.out.println("第"+(children.indexOf(book)+1)+":"+book.getName());
List<Attribute> attributes = book.getAttributes();
for(Attribute att:attributes){
System.out.println(att.getName()+":"+att.getValue());
}
List<Element> bookChildren = book.getChildren();
for (Element bc:bookChildren){
System.out.println(bc.getName()+":"+bc.getValue());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果
JDOM创建xml文件
public class JDOMtest {
public static void main(String args[]) {
//创建新元素students
Element students = new Element("students");
//创建student元素
Element student = new Element("student");
//设置属性
student.setAttribute("id","1");
Element name = new Element("name");
//设置元素内的text
name.setText("小民");
Element age = new Element("age");
age.setText("93");
//name和age添加到student元素中
student.addContent(name).addContent(age);
Element student2 = new Element("student");
student.setAttribute("id","1");
Element name2 = new Element("name");
name2.setText("小泽");
Element age2 = new Element("age");
age2.setText("13");
student2.addContent(name2).addContent(age2);
students.addContent(student).addContent(student2);
//创建Document对象将根节点students放入
Document document = new Document(students);
//创建XMLOutputter用于输出到文件
XMLOutputter xml = new XMLOutputter();
//设置格式
Format f = Format.getPrettyFormat();
xml.setFormat(f);
try {
// 输出
xml.output(document,new FileOutputStream("JDOM_student.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
生成文件
第三方jar包下载地址
https://dom4j.github.io
http://www.jdom.org/
如果打不开就用这个
https://pan.baidu.com/s/1Iw2lJebhIoz3kd7cg1IK1g提取码:80o8