48 votes

Comment lire la réponse XML d'une URL en Java?

J'ai besoin d'écrire une fonction simple qui prend une URL et traite la réponse qui est XML ou JSON, j'ai vérifié le site Web Sun https://swingx-ws.dev.java.net/servlets/ProjectDocumentList , mais l'objet HttpRequest est ne se trouve nulle part, est-il possible de le faire en Java? J'écris une application cliente riche.

85voto

Karussell Points 7034

Pour l'analyse XML d'un flux d'entrée, vous pouvez faire:

 // the SAX way:
XMLReader myReader = XMLReaderFactory.createXMLReader();
myReader.setContentHandler(handler);
myReader.parse(new InputSource(new URL(url).openStream()));

// or if you prefer DOM:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new URL(url).openStream());
 

Mais pour communiquer sur http du serveur au client, je préfère utiliser la bibliothèque de Hesse ou springs http invoker lib

10voto

thisisananth Points 150

Si vous souhaitez imprimer XML directement sur l'écran, vous pouvez utiliser TransformerFactory

 URL url = new URL(urlString);
URLConnection conn = url.openConnection();

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(conn.getInputStream());

TransformerFactory factory = TransformerFactory.newInstance();
Transformer xform = factory.newTransformer();

// that's the default xform; use a stylesheet to get a real one
xform.transform(new DOMSource(doc), new StreamResult(System.out));
 

5voto

Bozho Points 273663

Obtenez votre réponse via une demande http régulière, en utilisant:

L'étape suivante consiste à l'analyser. Jetez un oeil à cet article pour un choix d'analyseur.

3voto

Pascal Thivent Points 295221

Si vous souhaitez utiliser SwingX-WS, alors jetez un oeil à XmlHttpRequest et JSONHttpRequest.

Plus sur ces classes dans le XMLHttpRequest et Swing blog.

1voto

Imran Points 217

Ok je pense avoir résolu le problème ci-dessous est un code de travail

 //
package xmlhttp;

import org.jdesktop.http.Response;

import org.jdesktop.http.Session;

import org.jdesktop.http.State;



public class GetXmlHttp{


    public static void main(String[] args) {

        getResponse();

    }

    public static void getResponse()
    {

        final Session session = new Session();

        try {
            String url="http://192.172.2.23:8080/geoserver/wfs?request=GetFeature&version=1.1.0&outputFormat=GML2&typeName=topp:networkcoverage,topp:tehsil&bbox=73.07846689124875,33.67929015631999,73.07946689124876,33.68029015632,EPSG:4326";
            final Response res=session.get(url);
            boolean notDone=true;
            do
            {
                System.out.print(session.getState().toString());

                if(session.getState()==State.DONE)
                {
                    String xml=res.toString();
                    System.out.println(xml);
                    notDone=false;


                }

            }while(notDone);

        } catch (Exception e1) {

            e1.printStackTrace();
        }


    }

}
 

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