2010-06-17 10 views
14

que tiene un archivo XML ubicado en un lugar tal comoarchivo XML de análisis de HTTP

http://example.com/test.xml 

Estoy tratando de analizar el archivo XML para utilizarlo en mi programa con xRuta como este, pero no está funcionando .

Document doc = builder.parse(new File(url)); 

¿Cómo puedo obtener el archivo XML?

+1

¿Por qué poner una recompensa de +100 por eso? Vea la respuesta de Nils, solo tiene que obtener primero su archivo xml como una secuencia y luego analizarlo. –

Respuesta

1

deshacerse del new File():

Document doc = builder.parse(url); 
1

Un poco más de detalle, sobre la base de la respuesta laz:

String urlString = "http://example.com/test.xml"; 
URL url = new URL(urlString); 
Document doc = builder.parse(url); 
+2

builder.parse no puede manejar una URL. – Travis

+0

Uhmm, vale, cometí un error. Pero esa es la forma en que deberías hacerlo. Primero abra una conexión con una URL, lea el contenido y luego analícelo. Lo siento por ese hermano. – santiagobasulto

+1

Este código ni siquiera se compilará: http://docs.oracle.com/javase/8/docs/api/javax/xml/parsers/DocumentBuilder.html –

-1
File fileXml = new File(url); 

DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document document = parser.parse(fileXml); 

debe ir

21

Trate de usar URLConnection.getInputStream() para conseguir el mango del archivo XML.

ver el código de abajo, en que yo estoy tratando de abrir un archivo XML y la impresión de todas las description campos:

import java.io.InputStream; 
import java.net.URL; 
import java.net.URLConnection; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 

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

public class HTTPXMLTest 
{ 
    public static void main(String[] args) 
    { 
     try { 
      new HTTPXMLTest().start(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private void start() throws Exception 
    { 
     URL url = new URL("http://localhost:8080/AutoLogin/resource/web.xml"); 
     URLConnection connection = url.openConnection(); 

     Document doc = parseXML(connection.getInputStream()); 
     NodeList descNodes = doc.getElementsByTagName("description"); 

     for(int i=0; i<descNodes.getLength();i++) 
     { 
      System.out.println(descNodes.item(i).getTextContent()); 
     } 
    } 

    private Document parseXML(InputStream stream) 
    throws Exception 
    { 
     DocumentBuilderFactory objDocumentBuilderFactory = null; 
     DocumentBuilder objDocumentBuilder = null; 
     Document doc = null; 
     try 
     { 
      objDocumentBuilderFactory = DocumentBuilderFactory.newInstance(); 
      objDocumentBuilder = objDocumentBuilderFactory.newDocumentBuilder(); 

      doc = objDocumentBuilder.parse(stream); 
     } 
     catch(Exception ex) 
     { 
      throw ex; 
     }  

     return doc; 
    } 
} 
+0

Excelente ejemplo. ¡Gracias! – fivetwentysix

2

Aquí está el ejemplo simple para obtener el formulario de datos esta cadena "http://www.gettingagile.com/feed/rss2/"

public class MainClassXml { 

    public static void main(String args[]) throws URISyntaxException, 
      ClientProtocolException, IOException, MalformedURLException { 

     String url = "http://www.gettingagile.com/feed/rss2/"; 
     System.out.println("Url is careated****"); 
     URL url2 = new URL(url); 
     HttpGet httpGet = new HttpGet(url); 
     HttpClient httpClient = new DefaultHttpClient(); 

     HttpResponse httpResponse = httpClient.execute(httpGet); 
     HttpEntity entity = httpResponse.getEntity(); 
     System.out.println("Entity is*****" + entity); 
     try { 
      String xmlParseString = EntityUtils.toString(entity); 
      System.out.println("This Stirng to be Pasrse***" + xmlParseString); 

      HttpURLConnection connection = (HttpURLConnection) url2 
        .openConnection(); 
      InputStream inputStream = connection.getInputStream(); 

      DocumentBuilderFactory builderFactory = DocumentBuilderFactory 
        .newInstance(); 
      DocumentBuilder documentBuilder = builderFactory 
        .newDocumentBuilder(); 
      Document document = documentBuilder.parse(inputStream); 
      document.getDocumentElement().normalize(); 

      System.out.println("Attributes are***" + document.getAttributes()); 

      NodeList nodeList = document.getElementsByTagName("rss"); 
      System.out.println("This is firstnode" + nodeList); 
      for (int getChild = 0; getChild < nodeList.getLength(); getChild++) { 

       Node Listnode = nodeList.item(getChild); 
       System.out.println("Into the for loop" 
         + Listnode.getAttributes().getLength()); 
       Element firstnoderss = (Element) Listnode; 
       System.out.println("ListNodes" + Listnode.getAttributes()); 
       System.out.println("This is node list length" 
         + nodeList.getLength()); 

       Node Subnode = nodeList.item(getChild); 
       System.out.println("This is list node" + Subnode); 
       System.out.println("rss attributes***************"); 
      } 

     } catch (Exception exception) { 

      System.out.println("Exception is" + exception); 

     } 
    }