¿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?
- Cómo actualizar versiones de Apache HttpClient en Android
- Cómo acelerar la representación con OpenGL (ES) 2 Android
- Cargando una imagen usando OpenCV en Android
- Error: (23, 17) Error al resolver: junit: junit: 4.12
- Diferencia entre los métodos de registro
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); }
- La aplicación se bloquea cuando se ejecuta utilizando Google Maps api v2
- ¿Cómo lanzar draw9patch y es absolutamente necesario reescalar imágenes?
- Temporizador Android actualizando una vista de texto (UI)
- ¿Cómo garantizar que la imagen seleccionada por el usuario no cambia después de reiniciar Android?
- Uso de expresiones lambda con interfaces no funcionales en Java
- URLEncoder codificar / decodificación de URLDecoder en java (Android)
- ¿Cómo saber si la cámara está en uso?
- ¿Cómo puedo analizar una suite de pruebas junit?
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:
- GetElementById requiere un solo identificador único en su documento, mientras que getElementsByName puede obtener varias ocurrencias del mismo nombre.
- 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.