rym
rym

Reputation: 545

how to parse a field contain a XML structure?

I have a field on my database(MYSQL) that contain a XML structure, I want to parse that field to extract data ,My idea is to extract that field and copied it into a file then parse it, but the problem that I should do that for more than 200 rows(and that number is growing by the time) ,thats mean that I should open each time a file to copie the field in it,wich consume time and memory, are their another solution?

UPDATE I have tried this code but it generate an error:

if(var2.length()!=0)
             {
            System.out.println("---------------test1--------------");

             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
                System.out.println("*********test2*********");
                InputSource is = new InputSource(new StringReader(var2)); 
                Document parse = builder.parse(is);
                System.out.println("builder.parse"+builder.parse(is).toString());
    System.out.println("______test3_____");


             }
             else
                    System.out.println("null");

        }


             }
             else
                    System.out.println("null");

The error:

---------------test1--------------
*********test2*********
java.net.UnknownHostException: www.opensymphony.com
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:195)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at  sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1194)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1090)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1003)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at DAOKPI.Main.main(Main.java:88)

Upvotes: 0

Views: 238

Answers (2)

Jacob
Jacob

Reputation: 43239

What parser are you using? You don't have to save the contents to a file (i.e. SAX):

saxParser.parse(new InputSource(new StringReader(yourXMLstring));

Edit: Of course, if possible, import the xml data into a correct relational scheme beforehand, like Quentin mentioned.

Upvotes: 1

Quentin
Quentin

Reputation: 943759

Don't use XML. Express the data using database tables instead.

Upvotes: 0

Related Questions