Teddy
Teddy

Reputation: 9

Reading xml from web

I'm reading a xml from a specific url. But I'm getting this error

[Fatal Error] :3:24: Open quote is expected for attribute "http-equiv" associated with an element type "META".

The xml is missing encoding UTF-8, I added it but I'm still getting this error. A help will be very appreciated.

This is my code:

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;

public class crawleycraw {

    public static void main(String[] args) throws IOException, TransformerException, SAXException, ParserConfigurationException {
        // TODO Auto-generated method stub
        String urlString = "http://www.bnb.bg/";
        URL url = new URL(urlString);
        URLConnection conn = url.openConnection();

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

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

        Transformer transformer = null;
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,"no");

        xform.transform(new DOMSource(doc), new StreamResult(System.out));
    }

}

Upvotes: 0

Views: 211

Answers (2)

Red Boy
Red Boy

Reputation: 5719

The URL http://www.bnb.bg/will return you HTML, not XML. Hence, when you parse it, it will be throwing en error, as its HTML, not XML.

Your code has other problem as well as answered by Srinevu

Even if you download above URL using curl or wget or browser, save it as example.xml, use any XML editor, you will see exact same error, you are seeing by Java parser.

String urlString = "http://www.bnb.bg/";

Upvotes: 1

Sree
Sree

Reputation: 374

your code is fine except, setting properties to null(transformer).. you may have problem with the response you are getting from URL. Here I have tried with simple xml string, it is working fine..

public static void main(String[] args) throws Exception {
        String urlString = "<Customers><Customer Name=\"Test_91\" Code=\"91\"/><Customer Name=\"Test_92\" Code=\"92\"/></Customers>";
        // URL url = new URL(urlString);
        // URLConnection conn = url.openConnection();
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new ByteArrayInputStream(urlString.getBytes()));
        TransformerFactory factoryl = TransformerFactory.newInstance();
        Transformer xform = factoryl.newTransformer();
        // Transformer transformer = null;
        xform.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
        xform.transform(new DOMSource(doc), new StreamResult(System.out));
    }

Upvotes: 0

Related Questions