我在我的數據庫(MYSQL)上有一個包含XML結構的字段,我想分析該字段以提取數據,我的想法是提取該字段並將其複製到文件中,然後解析它,但問題是我應該這樣做超過200行(而且這個數字正在增長),這意味着我應該打開每一個文件來複制它的領域,消耗時間和內存,是他們的另一個解決方案嗎?如何解析一個字段包含一個XML結構?
UPDATE 我曾嘗試這個代碼,但它產生一個錯誤:
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");
錯誤:
---------------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)
(作爲對a的迴應,自刪除後,「我不明白!」評論):XML是存儲數據的一種手段。數據庫是存儲數據的一種手段。不要將數據以XML格式存儲在數據庫中。只需將數據直接存儲在數據庫中即可。根據需要添加其他表格/行/列。 – Quentin
,我無法在數據庫中創建任何表的問題,它是我無法修改(由公司禁止)的數據庫,我無法使用中間數據庫 – rym
這是一個管理問題。你應該試着解決這個問題,而不是用複雜和低效的黑客來解決它。 – Quentin