¿Cómo se puede analizar HTML en android?

Estoy haciendo una aplicación para android, y un elemento de la funcionalidad de la aplicación es devolver los resultados de una búsqueda en línea del catálogo de una biblioteca. La aplicación debe mostrar los resultados de la búsqueda, que se realiza a través de un formulario HTML personalizado, de manera que se ajuste al resto de la aplicación. Es decir, los resultados de la búsqueda deben ser analizados y los elementos útiles se muestran. Me preguntaba si / cómo esto podría lograrse en android?

Puede utilizar XmlPullParser para analizar XML.

Por ejemplo, consulte http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html

Usted utilizaría un Analizador Html. Uno que yo uso y funciona muy bien es JSoup Aquí es donde tendrá que comenzar con el análisis de html. También Apache Jericó es otra buena.

Podría recuperar el documento html utilizando DOM y utilizar el método JSOUP Select () para seleccionar las etiquetas que desee obtener. Ya sea por etiqueta, id o clase.

Solución

Use the: Jsoup.connect(String url) method: Document doc = Jsoup.connect("http://example.com/").get(); 

Esto le permitirá conectarse a la página html utilizando la url. Y guárdelo como Document doc, a través de DOM. Y la lectura de él con el método selector ().

Descripción

El método connect (String url) crea una nueva Connection y get () busca y analiza un archivo HTML. Si se produce un error al buscar la URL, lanzará una IOException, que debe manejar adecuadamente.

La interfaz de conexión está diseñada para el encadenamiento de métodos para generar peticiones específicas:

  Document doc = Jsoup.connect("http://example.com") 

Si lees la documentación sobre Jsoup deberías ser capaz de lograr esto.

EDIT: Aquí está cómo usted utilizaría el método del selector

  //Once the Document is retrieved above, use these selector methods to Extract the data you want by using the tags, id, or css class Elements links = doc.select("a[href]"); // a with href Elements pngs = doc.select("img[src$=.png]"); // img with src ending .png Element masthead = doc.select("div.masthead").first(); // div with class=masthead Elements resultLinks = doc.select("h3.r > a"); // direct a after h3 

EDIT: Utilizando JSOUP puede utilizar esto para obtener atributos, texto,

 Document doc = Jsoup.connect("http://example.com") Element link = doc.select("a").first(); String text = doc.body().text(); // "An example link" String linkHref = link.attr("href"); // "http://example.com/" String linkText = link.text(); // "example"" String linkOuterH = link.outerHtml(); // "<a href="http://example.com"><b>example</b></a>" String linkInnerH = link.html(); // "<b>example</b>" 

Siendo que los resultados de búsqueda son HTML y HTML es un lenguaje de marcado (ML), puede utilizar XmlPullParser de Android para analizar los resultados.

  • Xamarin.Android: ¿Cómo capturar eventos Button definidos en el atributo OnClick XML?
  • No se puede acceder a android / drawable Icon-Resource
  • ¿Cómo afectar a elementos fuera de un listview cuando se hace clic en algunos elementos de la vista de lista?
  • Considere la posibilidad de agregar android: paddingStart = "25dp" para soportar mejor layouts de derecha a izquierda Error
  • Android Flavors, ContentProviders, SyncAdapters y AccountManager
  • Cómo cambiar el origen de ImageView en android
  • ¿Por qué mi EditText se expandió horizontalmente o verticalmente después de configurar Width and Height como wrap_content en android?
  • Parser SAX vs analizador XMLPull
  • AutoCompleteTextView setError
  • Android, escucha de la casilla de verificación en XML?
  • Comentarios en Android Layout xml
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.