3

さて、今日の問題は、.NET Web サービスからXML の結果を返そうとしていることです。XML は SQL ストアド プロシージャから直接生成され、XML は次のようになります。

<?xml version="1.0" encoding="utf-8" ?> 
 <Details>
  <KlockleId>US0065NOVA</KlockleId> 
  <ListingPrice>54535.612830620680</ListingPrice> 
  <CurrencyCountry>US</CurrencyCountry> 
  <RealStateTax>0.000000000000</RealStateTax> 
  <CommonCharge>0.000000000000</CommonCharge> 
  <SquareFeet>4.200000000000000e+002</SquareFeet> 
  <ActivationDate>2011-04-19T16:16:46.577</ActivationDate> 
  <LotSize>0.000000000000000e+000</LotSize> 
  <YearBuilt>1969</YearBuilt> 
  <FirstName>Salmon Realty</FirstName> 
  <Phone>386 5474221</Phone> 
  <PropertyType>Condo/Co-op</PropertyType> 
  <Construction>Concrete</Construction> 
  <TotalRooms>None</TotalRooms> 
  <Bedroom>None</Bedroom> 
  <BathRoom>One</BathRoom> 
  <HalfBath>None</HalfBath> 
  <Address>600 Atlantic Ave N Unit: 1117</Address> 
  <Area>Volusia</Area> 
  <City>Daytona Beach</City> 
  <Country>United States</Country> 
  <PostalCode>32118</PostalCode> 
  <State>Florida</State> 
  <GMTOffset>0</GMTOffset> 
  <Status>Active</Status> 
  <Zooning>Residential</Zooning> 
  <PublicProperty>1</PublicProperty> 
  <DateAdded>2011-04-19T16:17:00</DateAdded> 
  <PropertyCategory>1</PropertyCategory> 
  <LoadType>2</LoadType> 
 </Details>

ここで、XML プル パーサーを使用すると、次のエラーが表示されます。

05-12 21:42:02.963: WARN/System.err(1060): org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:0 in java.io.InputStreamReader@44e847a8) 


XML パーサーのコードは次のようになります。

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.util.Xml;

public class PropertyDetailsHandler {

    private ArrayList<PropertyDetails> details;
    private StringReader xmlReader;

    private final String DETAILS = "Details";
    private final String COUNTRY = "Country";
    private final String CITY = "City";

    public PropertyDetailsHandler(String xml) {
        xmlReader = new StringReader(xml);
    }

    public void parse() throws XmlPullParserException, IOException {
        XmlPullParser parser = Xml.newPullParser();
        parser.setInput(xmlReader);

        // The StockQuote that is currently being parsed
        PropertyDetails currentProperty = null;

        // The current event returned by the parser
        int eventType = parser.getEventType();

        while (eventType != XmlPullParser.END_DOCUMENT) {
            String xmlNodeName;

            switch (eventType) {
            case XmlPullParser.START_DOCUMENT:
                details = new ArrayList<PropertyDetails>();
                break;
            case XmlPullParser.START_TAG:
                xmlNodeName = parser.getName();
                if (xmlNodeName.equalsIgnoreCase(DETAILS)) {
                    // When the  element is reached, create a new
                    // StockQuote.
                    currentProperty = new PropertyDetails();
                } else if (xmlNodeName.equalsIgnoreCase(COUNTRY)) {
                    currentProperty.setCountry(parser.nextText());
                } else if (xmlNodeName.equalsIgnoreCase(CITY)) {
                    currentProperty.setCity(parser.nextText());
                }
                break;
            case XmlPullParser.END_TAG:
                xmlNodeName = parser.getName();
                if (xmlNodeName.equalsIgnoreCase(DETAILS)) {
                    details.add(currentProperty);
                    break;
                }
            }

            eventType = parser.next();
        }
    }

    public ArrayList<PropertyDetails> getCountry() {
        return details;
    }
}

現在、XML からCityCountryのみを解析しようとしていますが、エラーからわかるように、タグをまったく取得していません。それで、何か提案はありますか?

4

1 に答える 1

0

XMLReader インスタンスが空のようです: 何も引き込んでいません。パスワードを取得している URL は何らかの方法で認証されていますか?

05-12 21:42:02.963: WARN/System.err(1060): org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:0 in java.io.InputStreamReader@44e847a8) 

位置ステートメントに注意してください: 1:0は、エラーが行 0 の文字 1 で発生したことを示します (または行 1 の文字 0、バージョンからバージョンへのこれらのカウント方法をまったく思い出せません)。

于 2011-05-13T14:01:33.713 に答える