Forum » Programiranje » [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
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
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.
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://...")
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
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?
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.
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [JAVA] HTTPS clientOddelek: Programiranje | 3186 (1916) | peterv6i |
» | [PHP]Zajem slike iz direktorijaOddelek: Programiranje | 1243 (1160) | KernelPanic |
» | java + xmlOddelek: Programiranje | 1529 (1285) | GaPe |
» | [JAVA] zaustavitev niti (threadov)Oddelek: Programiranje | 3184 (3184) | morbo |
» | [Java]Brane spletne strani preko httpsOddelek: Programiranje | 2150 (1969) | CWIZO |