Java android中的End标记应为xmlpullparser异常
我正在进行xml解析,我正在使用第三方sml api,但遇到以下异常, 请帮我解决这个问题,我想得到“长期描述”、“房间舒适性”” 日志Java android中的End标记应为xmlpullparser异常,java,android,xml,xml-parsing,Java,Android,Xml,Xml Parsing,我正在进行xml解析,我正在使用第三方sml api,但遇到以下异常, 请帮我解决这个问题,我想得到“长期描述”、“房间舒适性”” 日志 04-30 01:17:29.065: W/System.err(2483): org.xmlpull.v1.XmlPullParserException: END_TAG expected (position:START_TAG <description>@1:8021 in java.io.InputStreamReader@52eae5d0)
04-30 01:17:29.065: W/System.err(2483): org.xmlpull.v1.XmlPullParserException: END_TAG expected (position:START_TAG <description>@1:8021 in java.io.InputStreamReader@52eae5d0)
04-30 01:17:29.065:W/System.err(2483):org.xmlpull.v1.XmlPullParserException:预期的结束标记(在java.io中的位置:开始标记@1:8021)。InputStreamReader@52eae5d0)
我的xml是:
我的解析代码如下:
public class NewsFeedParser_HotelDesc {
private InputStream urlStream;
private XmlPullParserFactory factory;
private XmlPullParser parser;
private List<RssFeed_HotelListDesc> rssFeedList;
private RssFeed_HotelListDesc rssFeed;
public List<String> hotel_list_data;
private String urlString;
private String tagName;
private String name;
private String hotelRating;
private String tripAdvisorReviewCount;
private String tripAdvisorRatingUrl;
private String address1;
private String lowRate;
private String propertyDescription;
private String thumbnailUrl;
private String hotelPolicy;
private String latitude;
private String longitude;
private String checkInTime;
private String checkOutTime;
public static final String ITEM = "HotelSummary";
public static final String CHANNEL = "ns2:HotelInformationResponse";
public static final String HOTEL_NAME = "name";
public static final String HOTEL_RATING = "hotelRating";
public static final String HOTEL_REVIEWS_COUNT = "tripAdvisorReviewCount";
public static final String HOTEL_RATING_URL = "tripAdvisorRatingUrl";
public static final String HOTEL_ADDRESS = "address1";
public static final String HOTEL_PRICE = "lowRate";
public static final String HOTEL_PROPERTY_DESC = "propertyDescription";
public static final String HOTEL_IMAGE_GALLARY = "thumbnailUrl";
public static final String HOTEL_POLICY = "hotelPolicy";
public static final String LATITUDE = "latitude";
public static final String LONGITUDE = "longitude";
public static final String CHECK_IN = "checkInTime";
public static final String CHECK_OUT = "checkOutTime";
// new attribute added...!!
public static final String ROOM_TYPE = "RoomType";
public static String ROOM_CODE = "room_code";
public static final String DESCRIPTIONLONG = "descriptionLong";
public static final String ROOMAMENITY = "RoomAmenity";
public static final String AMENITY = "amenity";
private String description_long;
private String food_drink;
private String bathrum;
private String rum_code;
private String amenity;
public NewsFeedParser_HotelDesc(String urlString) {
this.urlString = urlString;
}
public NewsFeedParser_HotelDesc() {
// TODO Auto-generated constructor stub
}
public static InputStream downloadUrl(String urlString) throws IOException {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setDoInput(true);
// conn.setDoOutput(true);
conn.setRequestProperty("Accept",
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
conn.setRequestProperty("Accept-Language", "en-us,en;q=0.5");
conn.setRequestProperty("Accept-Charset",
"ISO-8859-1,utf-8;q=0.7,*;q=0.7");
conn.connect();
int rCode = conn.getResponseCode();
System.out.println("************Responce Code:************" + rCode);
InputStream stream = conn.getInputStream();
if (conn.getResponseCode() != 200) {
stream = conn.getErrorStream();
System.out.println("**********************OK**************");
} else {
stream = conn.getInputStream();
}
return stream;
}
public List<RssFeed_HotelListDesc> parse() {
try {
int count = 0;
factory = XmlPullParserFactory.newInstance();
parser = factory.newPullParser();
urlStream = downloadUrl(urlString);
parser.setInput(urlStream, null);
int eventType = parser.getEventType();
boolean done = false;
rssFeed = new RssFeed_HotelListDesc();
hotel_list_data = new ArrayList<String>();
rssFeedList = new ArrayList<RssFeed_HotelListDesc>();
while (eventType != XmlPullParser.END_DOCUMENT && !done) {
tagName = parser.getName();
// System.out.println("City Tag:"+tagName);
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
if (tagName.equals(ITEM)) {
rssFeed = new RssFeed_HotelListDesc();
}
if (tagName.equals(HOTEL_NAME)) {
name = parser.nextText().toString();
hotel_list_data.add(name);
}
if (tagName.equalsIgnoreCase(ROOM_TYPE)) {
description_long = parser.nextText().toString();
System.out
.println("==============description long==============="
+ description_long);
hotel_list_data.add(description_long);
}
break;
case XmlPullParser.END_TAG:
if (tagName.equals(CHANNEL)) {
done = true;
} else if (tagName.equals(ITEM)) {
rssFeed = new RssFeed_HotelListDesc(name, hotelRating,
tripAdvisorRatingUrl, address1, lowRate,
propertyDescription, thumbnailUrl, hotelPolicy,
latitude, longitude, checkInTime, checkOutTime);
rssFeedList.add(rssFeed);
}
break;
}
eventType = parser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
return rssFeedList;
}
}
公共类NewsFeedParser\u HotelDesc{
私有输入流urlStream;
私营工厂;
私有xmlpull解析器;
私有列表rssFeedList;
私人RssFeed_HotelListDesc RssFeed;
公共列表酒店列表数据;
私有字符串urlString;
私有字符串标记名;
私有字符串名称;
私人字符串酒店;
私有字符串tripAdvisorReviewCount;
私有字符串tripAdvisorRatingUrl;
私有字符串地址1;
私有字符串低速率;
私有字符串属性描述;
私有字符串缩略图URL;
私人字符串酒店政策;
私有字符串纬度;
私有字符串经度;
私有字符串校验时间;
私有字符串签出时间;
公共静态最终字符串ITEM=“HotelSummary”;
公共静态最终字符串通道=“ns2:HotelInformationResponse”;
公共静态最终字符串HOTEL_NAME=“NAME”;
公共静态最终字符串hotelRating=“hotelRating”;
公共静态最终字符串酒店\u评论\u COUNT=“tripAdvisorReviewCount”;
公共静态最终字符串酒店\u评级\u URL=“tripAdvisorRatingUrl”;
公共静态最终字符串HOTEL_ADDRESS=“address1”;
公共静态最终字符串酒店\u PRICE=“lowRate”;
公共静态最终字符串HOTEL\u PROPERTY\u DESC=“propertyDescription”;
公共静态最终字符串HOTEL\u IMAGE\u GALLARY=“thumbnailUrl”;
公共静态最终字符串HOTEL_POLICY=“hotelPolicy”;
公共静态最终字符串LATITUDE=“LATITUDE”;
公共静态最终字符串经度=“经度”;
公共静态最终字符串CHECK_IN=“checkInTime”;
公共静态最终字符串CHECK_OUT=“checkOutTime”;
//新增属性。。。!!
公共静态最终字符串ROOM\u TYPE=“RoomType”;
公共静态字符串ROOM\u CODE=“ROOM\u CODE”;
公共静态最终字符串DESCRIPTIONLONG=“DESCRIPTIONLONG”;
公共静态最终字符串ROOMAMENITY=“ROOMAMENITY”;
公共静态最终字符串amentity=“amentity”;
私有字符串描述_long;
私人串食(饮);;
私人串浴室;
私有字符串rum_码;
私人字符串舒适性;
公共NewsFeedParser_HotelDesc(字符串urlString){
this.urlString=urlString;
}
公共新闻FeedParser_HotelDesc(){
//TODO自动生成的构造函数存根
}
公共静态InputStream downloadUrl(字符串urlString)引发IOException{
URL=新URL(URL字符串);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod(“GET”);
conn.setDoInput(真);
//连接设置输出(真);
conn.setRequestProperty(“接受”,
“text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”);
conn.setRequestProperty(“接受语言”,“en-us,en;q=0.5”);
conn.setRequestProperty(“接受字符集”,
“ISO-8859-1,utf-8;q=0.7,*;q=0.7”);
连接();
int rCode=conn.getResponseCode();
System.out.println(“*************响应代码:*************”+rCode);
InputStream=conn.getInputStream();
如果(连接getResponseCode()!=200){
stream=conn.getErrorStream();
System.out.println(“******************************************确定**********************”);
}否则{
stream=conn.getInputStream();
}
回流;
}
公共列表解析(){
试一试{
整数计数=0;
factory=XmlPullParserFactory.newInstance();
parser=factory.newPullParser();
urlStream=下载URL(urlString);
setInput(urlStream,null);
int eventType=parser.getEventType();
布尔完成=假;
rssFeed=新的rssFeed_HotelListDesc();
酒店列表数据=新的ArrayList();
rssFeedList=newarraylist();
while(eventType!=XmlPullParser.END_文档&&!完成){
tagName=parser.getName();
//System.out.println(“城市标记:+标记名”);
开关(事件类型){
案例XmlPullParser.START_文档:
打破
case XmlPullParser.START_标记:
if(标记名.equals(项)){
rssFeed=新的rssFeed_HotelListDesc();
}
if(标记名.equals(酒店名称)){
name=parser.nextText().toString();
酒店列表数据。添加(名称);
}
if(标记名.equalsIgnoreCase(房间类型)){
description_long=parser.nextText().toString();
系统输出
.println(“======================说明长度===================================”
+说明(龙),;
酒店列表数据。添加(说明长);
}
打破
case XmlPullParser.END_标记:
if(标记名.equals(通道)){
完成=正确;
}else if(标记名.equals(项)){
rssFeed=新rssFeed_HotelListDesc(名称、酒店等级、,
tripAdvisorRatingUrl,地址1,低速率,
propertyDescription、thumbnailUrl、hotelPolicy、,
纬度、经度、签到