» »

[Android] Parsanje XMLja

[Android] Parsanje XMLja

icurk ::

Pri parsanju XML uporabljam SAXParserFactory. Vse mi dela lepo, če je aplikacija pisana za Android 2.3.3, če je pa za Android 4.0 pa mi vrne null exception. Spodaj prilagam delček kode. A mogoče ve kdo v čem je problem?
URL website = new URL(stran);
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
			
XMLHandler myHandler = new XMLHandler();
xr.setContentHandler(myHandler);
xr.parse(new InputSource(website.openStream()));
			
String information = myHandler.getInfo();
tv.setText(information);




public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		if(localName.equals("id")){
			String t = attributes.getValue("id");
			info.setId(t);
		}
	}

Mavrik ::

Prilepi še stack trace in primer XMLja ki ga parsaš.
The truth is rarely pure and never simple.

Zgodovina sprememb…

  • spremenil: Mavrik ()

icurk ::

<item>
		<id id="1"/>
		<predmet data="Slovenšćina"></predmet>
	</item>
	<item>
		<id id="2"/>
		<predmet data="Matematika"></predmet>
	</item>
	<item>

Kaj pa je ta stack trace in kje ga dobim? Sem še bolj nov v androidu...

Mavrik ::

V LogCatu. Tam ti namreč dejansko piše kje in kaj se je usulo.
The truth is rarely pure and never simple.

krneki0001 ::

Se t slučajno usuje zaradi šumnikov?
Asrock X99 Extreme 4 | Intel E5-2683V4 ES | 64GB DDR4 2400MHz ECC |
Samsung 250GB M.2 | Asus 1070 TI | 850W Antec | LC Tank Buster

icurk ::

Saj se mi ne prav usuje, samo null exception mi vrne. Sem se malo igral in sem opazil da se nekaj zgodi prav tukaj
xr.parse(new InputSource(website.openStream()));

Ker sem si v handlerju potem loge zapiseval in se mi že takoj pri odprtju dokumenta ne pojavi pri log.

Zanimivo mi je, da mi ista koda lepo parsa XML na emulatoru 2.3.3, na 4.0 mi pa vrne izjemo. Sem probal še na 3.0 pa mi pravtako vrne izjemo.

kunigunda ::

Preveri kaj ti vraca kreiranje objektov

URL web=new URL()
if (web == null) {
...

InputSource x=new InputSource(web.openStream())
if (x == null) {
...

Lohk da imas string 'stran' brez protokola (npr "http://...")

icurk ::

Sedaj sem odkril kaj vrže izjemo in sicer vrstica
InputSource is = new InputSource(website.openStream());

url je celoten, skupaj s protokol. Sej če nebi bil mi vrjetno tudi na verziji 2.3.3 nebi delal. Zakaj mi torej new InputSorurce(...) v verzijah 3+ vrže izjemo?

icurk ::

Po dolgem iskanju in brskanju po spletu sem končno našel rešitev. Od 3.0 dalje, ne moreš opravljat internetnih IO na glavni niti. Sem naredil AsyncTask in zdej dela lepo pravilno :)

kunigunda ::

Nared se tkole
InputStream iis=website.openStream()
InputSource is=new InputSource(iis)

pomoje bo iis ze null, verjetno kaka android fora.

Aha, si me prehitu, no vazn da si najdu.

Zgodovina sprememb…

  • spremenilo: kunigunda ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[JAVA] HTTPS client

Oddelek: Programiranje
173186 (1916) peterv6i
»

[PHP]Zajem slike iz direktorija

Oddelek: Programiranje
51243 (1160) KernelPanic
»

java + xml

Oddelek: Programiranje
81529 (1285) GaPe
»

[JAVA] zaustavitev niti (threadov)

Oddelek: Programiranje
223184 (3184) morbo
»

[Java]Brane spletne strani preko https

Oddelek: Programiranje
112150 (1969) CWIZO

Več podobnih tem