android pull方式解析网络XML文件问题!
<?xml version="1.0" encoding="gbk" ?>- <smartresult>
- <product type="identitycard">
<code>452428199008150527</code>
<location>广西壮族自治区贺州地区富川瑶族自治县</location> <birthday>19900815</birthday>
<gender>f</gender>
</product>
</smartresult>
InputStream in=send();
String str=getData(in,"gbk");
/读取网络文件
public InputStream send(){
InputStream in=null;
try {
URL url=new URL(" http://www.youdao.com/smartresult-xml/search.s?type=id&q=452428199008150527");
HttpURLConnection http = (HttpURLConnection) url.openConnection();
in = http.getInputStream();
return in;
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
}
return in;
}
public String getData(InputStream in,String encode){
String number = "";
XmlPullParser parser = Xml.newPullParser();
try {
// 将xml文件以输入流的形式传递给 pull解析对象,并设置解析对象按照 utf-8 的编码进行解析
parser.setInput(in, encode);
// pull解析对象在解析xml时,会返回一个代表解析位置的值。
// START_DOCUMENT : 开始解析文档
// START_TAG : 开始解析标签
// END_TAG : 标签结束
// END_DOCUMENT :xml文档解析结束
// 得到当前解析的位置
int event = parser.getEventType();// 产生第一个事件
// 当没有解析的文档的末尾的时候,一直执行
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_DOCUMENT:// 判断当前事件是否是文档开始事件
break;
// 开始解析标签的时候,根据标签的不同名称。做不同操作
case XmlPullParser.START_TAG:
if("code".equals(parser.getName())){ //判断开始标签元素是否是name
number=number+parser.nextText()+" ";
}else if("location".equals(parser.getName())){ //判断开始标签元素是否是price
number=number+parser.nextText()+" ";
}else if("birthday".equals(parser.getName())){
number=number+parser.nextText()+" ";
}
break;
case XmlPullParser.END_TAG://判断当前事件是否是标签元素结束事件
break;
}
event = parser.next();// 进入下一个元素并触发相应事件 运行此处报错
}// end while
Log.e("PullParseService", "Parse End");
return number;
} catch (XmlPullParserException e) {
e.printStackTrace();
System.out.println(e);
} catch (IOException e) {
e.printStackTrace();
System.out.println(e);
}
return null;
}
10-17 08:46:25.081: INFO/System.out(1016): org.xmlpull.v1.XmlPullParserException: Error parsing document. (position:line -1, column -1) caused by: org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: unknown encoding --------------------编程问答-------------------- 唔人懂?我顶 --------------------编程问答-------------------- 参考这篇实战文章:Pull 生成和解析XML - Android --------------------编程问答--------------------
以参考!但是找不出什么问题! --------------------编程问答-------------------- 尝试了下觉得应该跟编码有关,
(1)将<?xml version="1.0" encoding="gbk" ?> 改成<?xml version="1.0" encoding="utf-8"?>;
(2)将 xmlParser.setInput(inputStream, "gbk");改成xmlParser.setInput(inputStream, "UTF-8"); --------------------编程问答--------------------
但是为什么就不支持GBK呢?
补充:移动开发 , Android