54 votes

Comment récupérer la valeur de l'élément XML à l'aide de Java ?

Je suis nouveau sur XML. Je veux lire le XML suivant sur la base du nom de la demande. S'il vous plaît aidez-moi sur la façon de lire le XML ci-dessous en Java -

 <?xml version="1.0"?>
    <config>
        <Request name="ValidateEmailRequest">
            <requestqueue>emailrequest</requestqueue>
            <responsequeue>emailresponse</responsequeue>
        </Request>
        <Request name="CleanEmail">
            <requestqueue>Cleanrequest</requestqueue>
            <responsequeue>Cleanresponse</responsequeue>
        </Request>
    </config>

31voto

user2534191 Points 31

Au cas où vous n'auriez besoin que d'une (première) valeur à récupérer à partir de XML :

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

Si vous souhaitez analyser l'intégralité du document XML, utilisez JSoup :

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

28voto

Blaise Doughan Points 75613

Si vous cherchez simplement à obtenir une valeur unique à partir du XML, vous pouvez utiliser la bibliothèque XPath de Java. Pour un exemple, voir ma réponse à une question précédente :

Cela ressemblerait à quelque chose comme :

 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();
        }
    }

}

5voto

posdef Points 2740

Il existe différentes manières de procéder. Vous voudrez peut-être consulter XStream ou JAXB . Il y a des tutoriels et des exemples.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X