Android: получение результатов XML из мыльного веб-сервиса .NET - PullRequest
3 голосов
/ 13 мая 2011

Хорошо, моя проблема сегодня в том, что я пытаюсь вернуть XML-результат из моего веб-сервиса .NET. 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 Pull Parser, появляется ошибка:

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, но, как вы можете видеть из ошибки, он даже не обнаруживает мои теги вообще. Итак, есть предложения?

1 Ответ

0 голосов
/ 13 мая 2011

Похоже, ваш экземпляр 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 указывает, что ошибка произошла в символе 1 в строке 0 (или в символе 0 в строке 1, я никогда не могу вспомнить, как именно они рассчитывают эти вещи от версии к версии).

...