Java android中的End标记应为xmlpullparser异常

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)

我正在进行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:预期的结束标记(在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、,
纬度、经度、签到