簡體   English   中英

解析XML不解析整個文件

[英]Parsing XML not parsing whole file

我有這個XML

   <CurrencyExchangeMap>
    <CurrencyExchangePoint>
        <Address>addr 3</Address>
        <Latitude>41.6940265</Latitude>
        <Longitude>44.7985044</Longitude>
    </CurrencyExchangePoint>
    <CurrencyExchangePoint>
        <Address>addr 4</Address>
        <Latitude>41.7024424</Latitude>
        <Longitude>44.8058617</Longitude>
    </CurrencyExchangePoint>
    <CurrencyExchangePoint>
        <Address>addr 5</Address>
        <Latitude>41.6954418</Latitude>
        <Longitude>44.7046725</Longitude>
    </CurrencyExchangePoint>
    </CurrencyExchangeMap>

它有1000多個CurrencyExchangePoint但是當我解析它們時,它僅返回167個項目。 怎么了? 我已經親自檢查了手寫筆工作室中的xml文件,但未發現任何錯誤。

List<MapLT> mapLTs = null;
try {
        XMLPullParserHandler parserHandler = new XMLPullParserHandler();
        mapLTs = parserHandler.parse(getAssets().open("ltlg.xml"));

        for (MapLT item : mapLTs) {
            LatLng lt = new LatLng(item.getLatitude(), item.getLongitude());
            String title = item.getAddress();
            googleMap.addMarker(new MarkerOptions().position(lt).title(title));
        }

    } catch (Exception ex) {
        ex.printStackTrace();
    }

和我的xmlpullparse類:

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

public class XMLPullParserHandler {
List<MapLT> mapLTList;

private MapLT mapLT;
private String text;

public XMLPullParserHandler() {
    mapLTList = new ArrayList<MapLT>();
}

public List<MapLT> getMapLT(){
    return mapLTList;
}

public List<MapLT> parse(InputStream is){
    XmlPullParserFactory factory = null;
    XmlPullParser parser = null;

    try{
        factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);

        parser = factory.newPullParser();
        parser.setInput(is, null);

        int eventType = parser.getEventType();
        while(eventType != XmlPullParser.END_DOCUMENT){
            String tagname = parser.getName();
            switch (eventType){
                case XmlPullParser.START_TAG:
                    if(tagname.equalsIgnoreCase("CurrencyExchangePoint")){
                        mapLT = new MapLT();
                    }
                    break;
                case XmlPullParser.TEXT:
                    text = parser.getText();
                    break;
                case XmlPullParser.END_TAG:
                    if(tagname.equalsIgnoreCase("CurrencyExchangePoint")){
                        mapLTList.add(mapLT);
                    } else if(tagname.equalsIgnoreCase("Address")){
                        mapLT.setAddress(text);
                    } else if(tagname.equalsIgnoreCase("Latitude")){
                        mapLT.setLatitude(Float.parseFloat(text));
                    } else if(tagname.equalsIgnoreCase("Longitude")){
                        mapLT.setLongitude(Float.parseFloat(text));
                    }
                    break;
                default:
                    break;
            }
            eventType = parser.next();
        }

    }catch (Exception ex){
        ex.printStackTrace();
    }
    return  mapLTList;
}

}

我無法在您的代碼中發現問題,因此我的策略是添加日志。 首先打印所有事件標簽和獲得的標簽名稱。

問題是6500中一個標簽的值是空的。這花了我4個小時

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM