Java访问WebService返回XML数据的方法
本文实例讲述了Java访问WebService返回XML数据的方法。分享给大家供大家参考。具体如下:
importjava.io.IOException; importjava.io.InputStream; importjava.net.MalformedURLException; importjava.net.URL; importjava.net.URLConnection; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.PrintWriter; importorg.w3c.dom.Document; importorg.w3c.dom.DOMException; importorg.xml.sax.SAXException; importjavax.xml.parsers.DocumentBuilder; importjavax.xml.parsers.DocumentBuilderFactory; importjavax.xml.parsers.ParserConfigurationException; importjavax.xml.transform.OutputKeys; importjavax.xml.transform.Transformer; importjavax.xml.transform.TransformerConfigurationException; importjavax.xml.transform.TransformerException; importjavax.xml.transform.TransformerFactory; importjavax.xml.transform.dom.DOMSource; importjavax.xml.transform.stream.StreamResult; /*** *@authorxuechong *6/11/201016:58 *DomXMLString.java *概述:纯java方式访问远程WebService接口返回的xml格式的数据保存在本地 */ publicclassDomXMLString{ privatestaticStringSERVICES_HOST="www.webxml.com.cn"; //远程WebService接口url privatestaticStringNETDATA_URL="http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionProvince"; //访问远程WebService接口返回的xml格式的数据保存在本地的绝对路径 privatestaticStringLOCAL_PC_SAVEFILE_URL="E:dataTest/netDataToLocalFile.xml"; privateDomXMLString(){} publicstaticvoidmain(String[]args)throwsException{ Documentdocument=getProvinceCode(NETDATA_URL); helloOK(document,LOCAL_PC_SAVEFILE_URL); } /*返回一个Document对象*/ publicstaticDocumentgetProvinceCode(StringnetXMLDataURL){ Documentdocument=null; DocumentBuilderFactorydocumentBF=DocumentBuilderFactory.newInstance(); documentBF.setNamespaceAware(true); try{ DocumentBuilderdocumentB=documentBF.newDocumentBuilder(); InputStreaminputStream=getSoapInputStream(netXMLDataURL); //具体webService相关 document=documentB.parse(inputStream); inputStream.close(); }catch(DOMExceptione){ e.printStackTrace(); returnnull; }catch(ParserConfigurationExceptione){ e.printStackTrace(); returnnull; }catch(SAXExceptione){ e.printStackTrace(); returnnull; }catch(IOExceptione){ e.printStackTrace(); returnnull; } returndocument; } /*返回InputStream对象*/ publicstaticInputStreamgetSoapInputStream(Stringurl){ InputStreaminputStream=null; try{ URLurlObj=newURL(url); URLConnectionurlConn=urlObj.openConnection(); urlConn.setRequestProperty("Host",SERVICES_HOST); //具体webService相关 urlConn.connect(); inputStream=urlConn.getInputStream(); }catch(MalformedURLExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } returninputStream; } /*访问远程(WebService)xml数据后返回的xml格式字符串并生成为本地文件*/ publicstaticvoidhelloOK(Documentdocument,StringsavaFileURL){ TransformerFactorytransF=TransformerFactory.newInstance(); try{ Transformertransformer=transF.newTransformer(); DOMSourcesource=newDOMSource(document); transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8"); transformer.setOutputProperty(OutputKeys.INDENT,"YES"); PrintWriterpw=newPrintWriter(newFileOutputStream(savaFileURL)); StreamResultresult=newStreamResult(pw); transformer.transform(source,result); System.out.println("生成xml文件成功!"); }catch(TransformerConfigurationExceptione){ System.out.println(e.getMessage()); }catch(IllegalArgumentExceptione){ System.out.println(e.getMessage()); }catch(FileNotFoundExceptione){ System.out.println(e.getMessage()); }catch(TransformerExceptione){ System.out.println(e.getMessage()); } } }
希望本文所述对大家的java程序设计有所帮助。