当前位置: 代码迷 >> Web前端 >> java访问WebService回到xml数据生成为本地文件实例
  详细解决方案

java访问WebService回到xml数据生成为本地文件实例

热度:490   发布时间:2012-10-09 10:21:45.0
java访问WebService返回xml数据生成为本地文件实例

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.PrintWriter; 

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

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.TransformerConfigurationException; 
import javax.xml.transform.TransformerException; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 

/***
 * @author xuechong
 * src   http://eric-619.iteye.com/blog/692838
 * 6/11/2010 16:58
 * DomXMLString.java
 * 概述:纯java方式访问远程WebService接口返回的xml格式的数据保存在本地
 */
public class DomXMLString{
	private static String SERVICES_HOST = "www.webxml.com.cn";
	//远程WebService接口url
    private static String NETDATA_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionProvince";
    //访问远程WebService接口返回的xml格式的数据保存在本地的绝对路径
    private static String LOCAL_PC_SAVEFILE_URL = "E:dataTest/netDataToLocalFile.xml";
    
    private DomXMLString(){}
    
    public static void main(String[] args) throws Exception{	
    	Document document = getProvinceCode(NETDATA_URL);
    	helloOK(document, LOCAL_PC_SAVEFILE_URL);
    }
    
    /*返回一个Document对象*/
    public static Document getProvinceCode(String netXMLDataURL){	
        Document document = null;
        DocumentBuilderFactory documentBF = DocumentBuilderFactory.newInstance();
        documentBF.setNamespaceAware(true);
        try{
			DocumentBuilder documentB = documentBF.newDocumentBuilder();
			InputStream inputStream = getSoapInputStream(netXMLDataURL);    //具体webService相关
			document = documentB.parse(inputStream);
			inputStream.close();
		}catch(DOMException e){
			e.printStackTrace();
			return null;
		}catch(ParserConfigurationException e){
			e.printStackTrace();
			return null;
		}catch (SAXException e){	
			e.printStackTrace();
			return null;
		}catch(IOException e){
			e.printStackTrace();
			return null;
		}
		return document;
    }
    
    /*返回InputStream对象*/
    public static InputStream getSoapInputStream(String url){
        InputStream inputStream = null;
        try{
			URL urlObj = new URL(url);
			URLConnection urlConn = urlObj.openConnection();
			urlConn.setRequestProperty("Host", SERVICES_HOST);    //具体webService相关
			urlConn.connect();
			inputStream = urlConn.getInputStream();
		}catch(MalformedURLException e){
			e.printStackTrace();
		}catch(IOException e){
			e.printStackTrace();
		}
        return inputStream;
    }
    
    /*访问远程(WebService)xml数据后返回的xml格式字符串并生成为本地文件*/
    public static void helloOK(Document document, String savaFileURL){
    	TransformerFactory transF = TransformerFactory.newInstance();
    	try{ 
    		Transformer transformer = transF.newTransformer(); 
    		DOMSource source = new DOMSource(document); 
    		transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); 
    		transformer.setOutputProperty(OutputKeys.INDENT, "YES"); 
    		PrintWriter pw = new PrintWriter(new FileOutputStream(savaFileURL)); 
    		StreamResult result = new StreamResult(pw); 
    		transformer.transform(source, result);
    		System.out.println("生成xml文件成功!"); 
    	}catch(TransformerConfigurationException e){ 
    		System.out.println(e.getMessage()); 
    	}catch(IllegalArgumentException e){ 
    		System.out.println(e.getMessage()); 
    	}catch(FileNotFoundException e){ 
    		System.out.println(e.getMessage()); 
    	}catch(TransformerException e){
    		System.out.println(e.getMessage()); 
    	} 
    }
    
}
  相关解决方案