¿Cómo getElementById usando DOM?

Estoy teniendo parte de la página HTML a continuación y desea extraer el contenido de la etiqueta div su id es hiddenDivHL utilizando DOM Parser:

Parte de una página HTML:

 <div id='hiddenDivHL' style='display:none'>http://74.127.61.106/udayavaniIpad/details.php?home=0&catid=882&newsid=123069[InnerSep]http://www.udayavani.com/udayavani_cms/gall_content/2012/1/2012_1$thumbimg117_Jan_2012_000221787.jpg[InnerSep]ಯುವಜನತೆಯಿಂದ ಭವ್ಯಭಾರತ[OuterSep] 

Hasta ahora he utilizado el código a continuación, pero no puedo usar getElementById . ¿Cómo hacer eso?

DOM Parser:

  try { URL url = new URL("http://74.127.61.106/udayavaniIpad/details_android.php?home=1&catid=882&newsid=27593"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new InputSource(url.openStream())); doc.getDocumentElement().normalize(); NodeList nodeList = doc.getElementsByTagName("item"); /** Assign textview array lenght by arraylist size */ name = new TextView[nodeList.getLength()]; website = new TextView[nodeList.getLength()]; category = new TextView[nodeList.getLength()]; for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); name[i] = new TextView(this); Element fstElmnt = (Element) node; NodeList nameList = fstElmnt.getElementsByTagName("hiddenDivHL"); Element nameElement = (Element) nameList.item(0); nameList = nameElement.getChildNodes(); name[i].setText("Name = " + ((Node) nameList.item(0)).getNodeValue()); layout.addView(name[i]); } } catch (Exception e) { System.out.println("XML Pasing Excpetion = " + e); } /** Set the layout view to display */ setContentView(layout); } 

XPath es IMHO la forma más común y más fácil de navegar el DOM en Java.

 try{ URL url = new URL("http://74.127.61.106/udayavaniIpad/details_android.php?home=1& catid=882&newsid=27593"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new InputSource(url.openStream())); doc.getDocumentElement().normalize(); XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "/item/div[@id='hiddenDivHL']"; Node node = (Node) xpath.evaluate(expression, doc, XPathConstants.NODE); } catch (Exception e) { System.out.println("XML Pasing Excpetion = " + e); } 

No estoy seguro si la expresión XPath es correcta, pero el enlace está aquí: http://developer.android.com/reference/javax/xml/xpath/package-summary.html

Hay dos diferencias entre getElementById y getElementsByName:

  1. GetElementById requiere un solo identificador único en su documento, mientras que getElementsByName puede obtener varias ocurrencias del mismo nombre.
  2. GetElementById es un método (o función) del objeto de documento. Sólo puede acceder a él mediante document.getElementById (..).

Su código parece violar estos dos requisitos, usted parece ir a través de un bucle de nodos y esperar un id hiddenDivHL en cada lista de nodos. Así que el id no es único. En segundo lugar, su punto raíz no es el documento sino el punto raíz de cada nodo en esa lista.

Si sabe que tiene una sola instancia con ese identificador, intente document.getElementById.

Realmente no he tenido la pregunta.

A) ¿Quiere decir obtener más elementos por document.getElementById ('hiddenDivHL')?

  • Por lo que mi respuesta sería que, en un documento HTML, el id tiene que ser reservado para un solo elemento.

B) ¿Si sólo quieres capturar ese elemento?

  • Lo que no funciona exactamente? ¿Qué estás intentando lograr? Me temo que realmente no entiendo el punto.

Tienes que llamar a fstElmnt.getElementsByTagName("div"); Para obtener todos los elementos de div y comprobar si su id de atributo es igual a hiddenDivHL .

La manera más fácil que puedo pensar es utilizar la biblioteca jSoup , lo que hace es analizar el DOM para usted y le permite seleccionar elementos mediante un selector de estilo css (o estilo jquery).

En este ejemplo harías algo como esto

 Document doc = Jsoup.connect("http://74.127.61.106/udayavaniIpad/details_android.php?home=1&catid=882&newsid=27593").get(); String divContents = doc.select("#hiddenDivHL").first().text(); 

¿Por qué no puedes usar getElementById ()? Está en JavaSE 7 y JavaSE6 / 5 / 1.4.2, ya que 'DOM Level 2'.

Para obtener el contenido de un elemento en JavaScript:

 var el = document.getElementById('hiddenDivHL'); var contents = el.innerHTML; alert("Found " + contents.length + " characters of content."); 

Vea su ejemplo en jsfiddle .

Creo que la confusión se debe al hecho de que su pregunta se etiqueta JavaScript, pero el código que publicó es Java. Son lenguajes diferentes, y las personas de JavaScript sólo serán confundidas por ese analizador. No he usado Java en años, así que no puedo ayudarte.

  • Adjuntar fuentes de SDK de Android en Eclipse
  • Android: Problemas con ListViews y CheckBoxes
  • SetContentView provoca excepción de puntero nulo
  • ¿Hay una manera de pre-cache de una página web para ver con un Android WebView?
  • System.getProperty ("line.separator") Vs "\ n" para Android
  • Call class 'constructor por reflexión con Kotlin
  • Conexión WiFi a través de Android
  • ¿Cómo administrar el montón nativo?
  • En HttpURLConnection ¿Por qué no JSONObject como Params trabajo pero String como Params están trabajando
  • Fopen en el código JNI C falla en el archivo colocado en la carpeta de activos en la aplicación android
  • Funcionalidad para el reintento automático después de la excepción
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.