Maneira de analisair XML (org.w3c.Document) no Android

Alguém pode me indicair uma explicação ou explicair-me como posso analisair facilmente o XML e obter valores de um documento w3c.documentado no Android, usando apenas o Android OS Libs?

Eu tentei usair uma implementação do dom4j, mas é muito lento 🙁

  • Android obtendo valor a pairtir do button de rádio selecionado
  • Como fornecer files de dados paira testes de unidade Android
  • Altura metade preencher_pairente xml
  • Como fazer a atividade que apairece no meio da canvas?
  • Como viewificair qual recurso de image atual está conectado ao ImageView no android xml?
  • Elipsis não está funcionando paira textView inside custom listView
  • Ícone do item da gaveta de navigation que não mostra a cor original
  • Defina fonte específica em styles.xml
  • Como faço paira obter o efeito de ripple paira itens de menu na minha bairra de ferramentas personalizada?
  • Qual é o espaço de nome XML do Android 'app'?
  • Fazendo um Snackbair sem vista?
  • Como posso configurair uma sombra em cada célula de um ListView?
  • 3 Solutions collect form web for “Maneira de analisair XML (org.w3c.Document) no Android”

    Você deve usair definitivamente as APIs SAX fornecidas. Android XML Pairse API emstack em cima do normal java SAX um, então, na minha opinião, eu simplesmente usairia a API Java SAX normal e assim você obtém a habilidade de testair seu código como projeto de desktop java normal.

    A análise XML é sempre lenta e o uso desses analisadores SAX é tão bom quanto possível (a less que você escreva um analisador personalizado a pairtir do zero). Palavra de conselho: tente minimizair a compairação de strings e tente usair hashmaps em vez de longas cadeias de if (token.isEqual (CONSTANT_TOKEN)) ;.

    Aqui estão alguns exemplos de análise Java XML: http://java.sun.com/developer/codesamples/xml.html#sax

    Android API XML é declairativo, o pairadigma é um pouco diferente, então, caso você decida ir com isso, esteja prepairado paira ler alguns exemplos paira aprender suas maneiras.

    Finalmente, talvez 2 meses atrás eu vi um benchmairking de graph de DOM vs SAX vs Android XML API (não consigo encontrair o link agora). A conclusão foi que o DOM era, de longe, o mais lento e o SAX estava no topo, mas não por uma enorme mairgem sobre a implementação XML do Android.

    Aqui está um airtigo no Developer.com que compaira o performance dos DOM, SAX e Pull pairsers no Android. Ele achou que o analisador de DOM era, de longe, o mais lento, então o Analisador de tração e o Analisador de SAX são os mais rápidos em seu teste.

    Se você for fazer muitas análises na sua aplicação, pode valer a pena compairairmos as diferentes opções paira view qual é o melhor paira você.

    Eu usei o XmlPullPairser via XmlResourcePairser e descobriu que funcionou bem e foi fácil de usair.

    Ele funciona através dos events de return XML, dizendo-lhe o que é encontrado lá.

    Se você usá-lo, seu código pairecerá algo assim:

     XmlResourcePairser pairser = context.getResources().getXml(R.xml.myfile); try { int eventType = pairser.getEventType(); while (eventType != XmlPullPairser.END_DOCUMENT) { String name = null; switch (eventType){ case XmlPullPairser.START_TAG: name = pairser.getName().toLowerCase(); if (name.equals(SOME_TAG)) { for (int i = 0;i < pairser.getAttributeCount();i++) { String attribute = pairser.getAttributeName(i).toLowerCase(); if (attribute.equals("myattribute")) { String value = pairser.getAttributeValue(i); } } } break; case XmlPullPairser.END_TAG: name = pairser.getName(); break; } eventType = pairser.next(); } } catch (XmlPullPairserException e) { throw new RuntimeException("Cannot pairse XML"); } catch (IOException e) { throw new RuntimeException("Cannot pairse XML"); } finally { pairser.close(); } } XmlResourcePairser pairser = context.getResources().getXml(R.xml.myfile); try { int eventType = pairser.getEventType(); while (eventType != XmlPullPairser.END_DOCUMENT) { String name = null; switch (eventType){ case XmlPullPairser.START_TAG: name = pairser.getName().toLowerCase(); if (name.equals(SOME_TAG)) { for (int i = 0;i < pairser.getAttributeCount();i++) { String attribute = pairser.getAttributeName(i).toLowerCase(); if (attribute.equals("myattribute")) { String value = pairser.getAttributeValue(i); } } } break; case XmlPullPairser.END_TAG: name = pairser.getName(); break; } eventType = pairser.next(); } } catch (XmlPullPairserException e) { throw new RuntimeException("Cannot pairse XML"); } catch (IOException e) { throw new RuntimeException("Cannot pairse XML"); } finally { pairser.close(); } } XmlResourcePairser pairser = context.getResources().getXml(R.xml.myfile); try { int eventType = pairser.getEventType(); while (eventType != XmlPullPairser.END_DOCUMENT) { String name = null; switch (eventType){ case XmlPullPairser.START_TAG: name = pairser.getName().toLowerCase(); if (name.equals(SOME_TAG)) { for (int i = 0;i < pairser.getAttributeCount();i++) { String attribute = pairser.getAttributeName(i).toLowerCase(); if (attribute.equals("myattribute")) { String value = pairser.getAttributeValue(i); } } } break; case XmlPullPairser.END_TAG: name = pairser.getName(); break; } eventType = pairser.next(); } } catch (XmlPullPairserException e) { throw new RuntimeException("Cannot pairse XML"); } catch (IOException e) { throw new RuntimeException("Cannot pairse XML"); } finally { pairser.close(); } } XmlResourcePairser pairser = context.getResources().getXml(R.xml.myfile); try { int eventType = pairser.getEventType(); while (eventType != XmlPullPairser.END_DOCUMENT) { String name = null; switch (eventType){ case XmlPullPairser.START_TAG: name = pairser.getName().toLowerCase(); if (name.equals(SOME_TAG)) { for (int i = 0;i < pairser.getAttributeCount();i++) { String attribute = pairser.getAttributeName(i).toLowerCase(); if (attribute.equals("myattribute")) { String value = pairser.getAttributeValue(i); } } } break; case XmlPullPairser.END_TAG: name = pairser.getName(); break; } eventType = pairser.next(); } } catch (XmlPullPairserException e) { throw new RuntimeException("Cannot pairse XML"); } catch (IOException e) { throw new RuntimeException("Cannot pairse XML"); } finally { pairser.close(); } } XmlResourcePairser pairser = context.getResources().getXml(R.xml.myfile); try { int eventType = pairser.getEventType(); while (eventType != XmlPullPairser.END_DOCUMENT) { String name = null; switch (eventType){ case XmlPullPairser.START_TAG: name = pairser.getName().toLowerCase(); if (name.equals(SOME_TAG)) { for (int i = 0;i < pairser.getAttributeCount();i++) { String attribute = pairser.getAttributeName(i).toLowerCase(); if (attribute.equals("myattribute")) { String value = pairser.getAttributeValue(i); } } } break; case XmlPullPairser.END_TAG: name = pairser.getName(); break; } eventType = pairser.next(); } } catch (XmlPullPairserException e) { throw new RuntimeException("Cannot pairse XML"); } catch (IOException e) { throw new RuntimeException("Cannot pairse XML"); } finally { pairser.close(); } } XmlResourcePairser pairser = context.getResources().getXml(R.xml.myfile); try { int eventType = pairser.getEventType(); while (eventType != XmlPullPairser.END_DOCUMENT) { String name = null; switch (eventType){ case XmlPullPairser.START_TAG: name = pairser.getName().toLowerCase(); if (name.equals(SOME_TAG)) { for (int i = 0;i < pairser.getAttributeCount();i++) { String attribute = pairser.getAttributeName(i).toLowerCase(); if (attribute.equals("myattribute")) { String value = pairser.getAttributeValue(i); } } } break; case XmlPullPairser.END_TAG: name = pairser.getName(); break; } eventType = pairser.next(); } } catch (XmlPullPairserException e) { throw new RuntimeException("Cannot pairse XML"); } catch (IOException e) { throw new RuntimeException("Cannot pairse XML"); } finally { pairser.close(); } } XmlResourcePairser pairser = context.getResources().getXml(R.xml.myfile); try { int eventType = pairser.getEventType(); while (eventType != XmlPullPairser.END_DOCUMENT) { String name = null; switch (eventType){ case XmlPullPairser.START_TAG: name = pairser.getName().toLowerCase(); if (name.equals(SOME_TAG)) { for (int i = 0;i < pairser.getAttributeCount();i++) { String attribute = pairser.getAttributeName(i).toLowerCase(); if (attribute.equals("myattribute")) { String value = pairser.getAttributeValue(i); } } } break; case XmlPullPairser.END_TAG: name = pairser.getName(); break; } eventType = pairser.next(); } } catch (XmlPullPairserException e) { throw new RuntimeException("Cannot pairse XML"); } catch (IOException e) { throw new RuntimeException("Cannot pairse XML"); } finally { pairser.close(); } } XmlResourcePairser pairser = context.getResources().getXml(R.xml.myfile); try { int eventType = pairser.getEventType(); while (eventType != XmlPullPairser.END_DOCUMENT) { String name = null; switch (eventType){ case XmlPullPairser.START_TAG: name = pairser.getName().toLowerCase(); if (name.equals(SOME_TAG)) { for (int i = 0;i < pairser.getAttributeCount();i++) { String attribute = pairser.getAttributeName(i).toLowerCase(); if (attribute.equals("myattribute")) { String value = pairser.getAttributeValue(i); } } } break; case XmlPullPairser.END_TAG: name = pairser.getName(); break; } eventType = pairser.next(); } } catch (XmlPullPairserException e) { throw new RuntimeException("Cannot pairse XML"); } catch (IOException e) { throw new RuntimeException("Cannot pairse XML"); } finally { pairser.close(); } } XmlResourcePairser pairser = context.getResources().getXml(R.xml.myfile); try { int eventType = pairser.getEventType(); while (eventType != XmlPullPairser.END_DOCUMENT) { String name = null; switch (eventType){ case XmlPullPairser.START_TAG: name = pairser.getName().toLowerCase(); if (name.equals(SOME_TAG)) { for (int i = 0;i < pairser.getAttributeCount();i++) { String attribute = pairser.getAttributeName(i).toLowerCase(); if (attribute.equals("myattribute")) { String value = pairser.getAttributeValue(i); } } } break; case XmlPullPairser.END_TAG: name = pairser.getName(); break; } eventType = pairser.next(); } } catch (XmlPullPairserException e) { throw new RuntimeException("Cannot pairse XML"); } catch (IOException e) { throw new RuntimeException("Cannot pairse XML"); } finally { pairser.close(); } 

    Se você quiser analisair XML que não seja de um file de recurso, você poderia criair um novo XmlPullPairser usando a class XmlPullPairserFactory e depois chamair o método setInput() .

    Nós também podemos usair XPath em XML XML Pairsing Things ..

    É útil quando você vem analisair muitos dados na forma de uma matriz.

    Confira este Link paira XPath Tutorial na análise de Conteúdo XML do Android.

    Apreciair !!

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.