Saltar al contenido

¿Cómo recuperar el valor del elemento de XML usando Java?

Hacemos una revisión completa cada noticias en nuestro espacio con el objetivo de mostrarte en todo momento información con la mayor veracidad y certera.

Solución:

Si su XML es una cadena, entonces puede hacer lo siguiente:

String xml = ""; //Populated XML String....

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xml)));
Element rootElement = document.getDocumentElement();

Si su XML está en un archivo, entonces Document document será instanciado así:

Document document = builder.parse(new File("file.xml"));

los document.getDocumentElement() le devuelve el nodo que es el elemento del documento del documento (en su caso ).

Una vez que tengas un rootElementpuede acceder al elemento attribute (llamando rootElement.getAttribute() método), etc. Para obtener más métodos en org.w3c.dom.Element de Java

Más información sobre Java DocumentBuilder y DocumentBuilderFactory. Tener en cuentael ejemplo proporcionado crea un árbol DOM XML, por lo que si tiene una gran cantidad de datos XML, el árbol puede ser enorme.

  • Pregunta relacionada.

Actualizar Aquí hay un ejemplo para obtener el “valor” del elemento

protected String getString(String tagName, Element element) 
        NodeList list = element.getElementsByTagName(tagName);
        if (list != null && list.getLength() > 0) 
            NodeList subList = list.item(0).getChildNodes();

            if (subList != null && subList.getLength() > 0) 
                return subList.item(0).getNodeValue();
            
        

        return null;
    

Puedes llamarlo efectivamente como,

String requestQueueName = getString("requestqueue", element);

Si solo está buscando obtener un valor único del XML, puede usar la biblioteca XPath de Java. Para ver un ejemplo, vea mi respuesta a una pregunta anterior:

  • Cómo usar XPath en documentos xml que tienen un espacio de nombres predeterminado

Se vería algo como:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

public class Demo 

    public static void main(String[] args) 
        DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
        try 
            DocumentBuilder builder = domFactory.newDocumentBuilder();
            Document dDoc = builder.parse("E:/test.xml");

            XPath xPath = XPathFactory.newInstance().newXPath();
            Node node = (Node) xPath.evaluate("/Request/@name", dDoc, XPathConstants.NODE);
            System.out.println(node.getNodeValue());
         catch (Exception e) 
            e.printStackTrace();
        
    


En caso de que solo necesite un (primer) valor para recuperar de xml:

public static String getTagValue(String xml, String tagName)
    return xml.split("<"+tagName+">")[1].split("")[0];

En caso de que desee analizar todo el documento xml, use JSoup:

Document doc = Jsoup.parse(xml, "", Parser.xmlParser());
for (Element e : doc.select("Request")) 
    System.out.println(e);

Te mostramos reseñas y valoraciones

Te invitamos a añadir valor a nuestro contenido aportando tu veteranía en las observaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *