xml解析-pull和dom4j


一. 对于XML数据的解析,主要有以下三种技术:

a)DOM解析:解析器读入整个文档,并在内存中构建一个文档树形结构,应用程序可以使用 DOM  API来操作这个树。
b)SAX解析:解析器以流的方式读取文档。在发现元素开始、元素结束、文本、文档开始或结束等信息时产生相应事件,应用程序可编写对应的事件监听程序以进行处理。
c)PULL解析: 该方式与SAX很相似,不同的是该解析器产生的事件是一个数字,因此可以使用一个switch语句对感兴趣的事件进行处理。


1).  创建 URL 以及 HttpURLConnection 对象 
public InputStream getIs(){

InputStream is = null;

try {
/
URL url=new URL(path);

HttpURLConnection  conn=(HttpURLConnection) url.openConnection();

conn.setRequestMethod("GET");
is=conn.getInputStream();

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return is;

}

2). Dom4j解析:

public void getByDom(String path){

SAXReader reader = new SAXReader();

InputStream is = getIs(path);

try {
//绑定输入流--获取了文档对象
Document doc=reader.read(is,"utf-8");
//找根节点
Element root=doc.getRootElement();
//获取当前节点下所有节点集合
List<Element> data=root.elements();
for (int i = 0; i <data.size(); i++) {
Element eve=data.get(i);
System.out.println("属性值:"+eve.attributeValue("key"));
System.out.println("文本值:"+eve.getText());

}
} catch (DocumentException e) {
e.printStackTrace();
}

}

3).Pull解析

public void getByPull(String path){

InputStream is=getIs(path);
//创建
PULL解析器对象
XmlPullParser par=Xml.newPullParser();
try {
//加载流
par.setInput(is, "utf-8");
//获得驱动事件
int eventType=par.getEventType();
while (eventType!=XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
//获取标签名
String tagName=par.getName();
break;
case XmlPullParser.START_TAG:
tagName=par.getName();
if(tagName.equals("type-name")){
//取出属性值
String att=par.getAttributeValue(0);
String att2=par.getAttributeValue(null, "key");
//取出文本值
String txt=par.nextText();
System.out.println(att2+"--"+txt);
}
break;
case XmlPullParser.END_TAG:
tagName=par.getName();
//System.out.println(tagName);
break;
}
eventType=par.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值