DOM4J解析网络xml文档
- 导入dom4j-1.6.1.jar
- 下面给出一个接口,通过传递手机号参数,传回一个xml文档描述这个手机号所属地,我们要做的就是解析这个文档,获取所属地数据。
- http://apis.juhe.cn/mobile/get?phone=18751902567&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253
- 下面开始解析网络发来的xml文件,将其转为dom文档对象,并获取各个节点和内容。
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
/**
* 解析网络xml文件-DOM4J解析器
* 1.下面给出一个接口,通过传递手机号参数,传回一个xml文档描述这个手机号所属地
* 2.下面开始解析网络发来的xml文件,将其转为dom文档对象,并获取各个节点和内容。
*/
public class MainXML2 {
public static void main(String[] args) throws IOException, DocumentException {
String phone="18751902567";
//1.获取到xml资源的输入流
URL url=new URL("http://apis.juhe.cn/mobile/get?phone="+phone+"&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253");
URLConnection conn = url.openConnection();//打开连接
InputStream is = conn.getInputStream();//获取输入流
//2.创建xml读取对象
SAXReader sr = new SAXReader();
//3.通过读取对象sr,读取xml数据,并返回文档对象(dom树)
Document doc = sr.read(is);
//4.获取根节点
Element root = doc.getRootElement();
//5.解析内容(解析xml即获取dom树各个节点内容),参照该网站传回的xml格式进行解析
String code = root.elementText("resultcode");//获取resultcode子节点内容
if ("200".equals(code)){
//若码为200,表示手机号没问题,获取result子节点
Element result = root.element("result");
//获取result节点下的省份内容
String province = result.elementText("province");
String city = result.elementText("city");
if (province.equals(city)){
//若省份和城市同名
System.out.println("手机号码归属地为:"+city);
}else {
//省份和城市不同名
System.out.println("手机号码归属地:"+province+city);
}
}else{
System.out.println("请输入正确的手机号");
}
}
}
拿到了xml中province和city节点的内容。