XML parse file from HTTP

前端 未结 6 1534
广开言路
广开言路 2020-12-14 04:13

I have an XML file located at a location such as

http://example.com/test.xml

I\'m trying to parse the XML file to use it in my program with

相关标签:
6条回答
  • 2020-12-14 04:24

    Try using URLConnection.getInputStream() for getting the handle of XML file.

    See the below code, in that I am trying to open an xml file and printing all the description fields:

    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 讨论(0)
  • 2020-12-14 04:32

    Here is the simple example for getting data form this string "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);
    
            }
        }
    
    0 讨论(0)
  • 2020-12-14 04:37
    File fileXml = new File(url);
    
    DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document document = parser.parse(fileXml);
    

    it should go

    0 讨论(0)
  • 2020-12-14 04:38

    It's much easier with a XMLPullParser ... you don't have to deal with this event stuff and can quickly pick up some keywords ... I'm using it too ... only a couple of code lines :)

    http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html

    Regarding HTTP and files have a look here Download a file with DefaultHTTPClient and preemptive authentication

    0 讨论(0)
  • 2020-12-14 04:46

    A little more detail, based on laz answer:

    String urlString = "http://example.com/test.xml";
    URL url = new URL(urlString);
    Document doc = builder.parse(url);
    
    0 讨论(0)
  • 2020-12-14 04:51

    Get rid of the new File():

    Document doc = builder.parse(url);
    
    0 讨论(0)
提交回复
热议问题