java解析xml有四种方式:
Dom、SAX、DOM4J、JDOM
下面以Dom4j来解析xml文件
先导入两个jar包 dom4j-1.6.1.jar和junit-4.10.jar
package com.g_xml;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4j {
public static void main(String[] args) throws FileNotFoundException, DocumentException {
//1.创建SAXReader解析器
SAXReader reader = new SAXReader();
//2. 读取要解析的文件,让文件的内容存在 Document中
Document doc = reader.read(new FileInputStream("city.xml"));
//3. 获取根节点
Element root = doc.getRootElement();
//4.获取根节点的所有直接子元素
List<Element> list = root.elements();
//5.遍历所有根节点的直接子元素
for(Element ele:list) {
System.out.println(ele.getName()+"--"+ele.attributeValue("name")
+"--"+ele.attributeValue("postcode"));
}
}
}
package com.g_xml;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* dom4j解析xml
* @author ylq
*
*/
public class Dom4jDemo {
public static void main(String[] args) throws FileNotFoundException, DocumentException {
getCity();
}
public static void getCity() throws FileNotFoundException, DocumentException {
//1.创建SAXReader解析器
SAXReader reader = new SAXReader();
//2. 读取要解析的文件,让文件的内容存在 Document中
Document doc = reader.read(new FileInputStream("city.xml"));
//3. 获取根节点
Element root = doc.getRootElement();
//5. 遍历所有子节点
getElements(root);
}
/**
* 递归遍历所有根节点中的子元素
*/
public static void getElements(Element ele){
List<Element> list = ele.elements();//ele.elements()获取根节点中的直接子元素
if(list.size() > 0){
for(Element e : list){
if(e.getName().equals("province")){
System.out.print(" 省份: "+e.attributeValue("name"));
System.out.println(" 邮编: "+e.attributeValue("postcode"));
}else if(e.getName().equals("city")){
System.out.print(" 市: "+e.attributeValue("name"));
System.out.println(" 邮编: "+e.attributeValue("postcode"));
}else if(e.getName().equals("area")){
System.out.print(" 区: "+e.attributeValue("name"));
System.out.println(" 邮编: "+e.attributeValue("postcode"));
}
//递归调用
getElements(e);
}
}
}
}
city.xml和两个jar包,需要的朋友自己拿哦!
链接:https://pan.baidu.com/s/1iFtEoESieSzp0_8HXnicYA
提取码:6s25