思路:
1 用程序去访问 web service 服务.返回 xml文件。
2 用dom 去解析xml
3 用解析后的数据 生成 html文件
访问web service 的代码
public class StaticHTMLFile{
public static boolean PrintPage(String page, String url_addr) {
URL url;
String rLine = null;
PrintWriter fileOut = null;
InputStream ins = null;
File file=new File(page.trim());
try {
url = new URL(url_addr);
ins = url.openStream();
BufferedReader bReader = new BufferedReader(new InputStreamReader(ins,
"utf-8"));//获取编码为utf-8的文件
file.createNewFile();
FileOutputStream out = new FileOutputStream(file);
OutputStreamWriter writer = new OutputStreamWriter(out, "utf-8");
fileOut = new PrintWriter(writer);
//循环取取数据,并写入目标文件中
while ( (rLine = bReader.readLine()) != null) {
String tmp_rLine = rLine;
int str_len = tmp_rLine.length();
if (str_len > 0) {
fileOut.println(tmp_rLine);
fileOut.flush();
}
tmp_rLine = null;
}
url = null;
return true;
} catch (IOException e) {
System.out.println("error: " + e.getMessage());
e.printStackTrace();
return false;
} catch (Exception es) {
System.out.println(es.getMessage());
return false;
}
finally {//关闭资源
fileOut.close();
try {
ins.close();
} catch (IOException ex){
//关闭输入流出错
ex.printStackTrace();
}
}
}
}
把xml解析成int[]
public class DomXml2Int {
String fileName=null;//xml的文件
String tagName=null;//要提取的xml中标签的名字
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getTagName() {
return tagName;
}
public void setTagName(String tagName) {
this.tagName = tagName;
}
public List<Integer> builder() throws ParserConfigurationException, SAXException, IOException{
List<Integer> ids=null;
ids=new ArrayList<Integer>();
DocumentBuilderFactory dbf=null;
DocumentBuilder db=null;
Document d=null;
NodeList nl=null;
Node n=null;
dbf=DocumentBuilderFactory.newInstance();
db=dbf.newDocumentBuilder();
d=db.parse(fileName);
nl=d.getElementsByTagName(tagName);
//循环取出每个Node的值
for(int i=0;i<nl.getLength();i++){
n=nl.item(i);//得到每个node
//System.out.println(n.getTextContent());
ids.add(Integer.valueOf(n.getTextContent()));
}
return ids;
}
}
提取电视节目的代码
public class DomXml2String {
/**
* @param args
* @throws ParserConfigurationException
* @throws IOException
* @throws SAXException
*/
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
System.out.println(new DomXml2String().builder("tt.xml")[0]);
System.out.println(new DomXml2String().builder("tt.xml")[1]);
}
//解析xml到数组中去
public String[] builder( String xmlFilePath ) throws ParserConfigurationException, SAXException, IOException{
String[] tvShow= new String[2];
StringBuffer tvShowTempAM=new StringBuffer();
StringBuffer tvShowTempPM=new StringBuffer();
DocumentBuilderFactory dbf=null;
dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=null;
db=dbf.newDocumentBuilder();
Document d=null;
d=db.parse(new File(xmlFilePath));
NodeList n=null;
n=d.getElementsByTagName("tvProgramTable");
Node node=null;
//循环得到每个节点的值
for(int i=0;i<n.getLength();i++){
node=n.item(i);
//System.out.println(i+node.getChildNodes().item(3).getTextContent() );
if(node.getChildNodes().item(3).getTextContent().equals("AM")){
//System.out.println(i+" is am" );
tvShowTempAM.append(node.getChildNodes().item(1).getTextContent()+""+node.getChildNodes().item(5).getTextContent()+"<br>");
}else{
// System.out.println(i+" is pm" );
tvShowTempPM.append(node.getChildNodes().item(1).getTextContent()+""+node.getChildNodes().item(5).getTextContent()+"<br>");
}
}
tvShow[0]="AM\n"+tvShowTempAM.toString();
tvShow[1]="PM\n"+tvShowTempPM.toString();
return tvShow;
}
}
提取湖北省的所以电视节目
public class TVRequestWebServiceTest {
/**
* @param args
* @throws IOException
* @throws SAXException
* @throws ParserConfigurationException
* @throws TemplateException
*/
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, TemplateException {
List<Integer> dstIds=null;
List<Integer> pdIds=null;
String[] tvShow= new String[2];
//根据省的id得到省的所有电视台的id(数据保存到dstIds.xml)
StaticHTMLFile.PrintPage("E:/workspace/spring2Test/dstIds.xml",
"http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx/getTVstationDataSet?theAreaID=17 "
);
//根据dstIds.xml得到电视台的id(int)
DomXml2Int dxi=null;
dxi=new DomXml2Int();
dxi.setFileName("dstIds.xml");
dxi.setTagName("tvStationID");
dstIds=dxi.builder();
DomXml2String dx=null;
dx=new DomXml2String();
String2Html s2h=null;
//循环每个电视台得到每个电视的所以频道id
for(int i=0;i<dstIds.size();i++){
StaticHTMLFile.PrintPage("E:/workspace/spring2Test/pdIds" +
"_" +
dstIds.get(i) +
".xml",
"http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx/getTVchannelDataSet?theTVstationID=" +
dstIds.get(i)
);
dxi.setFileName("pdIds_"+dstIds.get(i)+".xml");
dxi.setTagName("tvChannelID");
pdIds=dxi.builder();//获得每个电视台的所以频道id
//测试
/*for(int j=0;j<pdIds.size();j++){
System.out.println(dstIds.get(i)+":"+pdIds.get(j));
}
//测试成功
*/
//循环每个频道得到频道的电视节目
for(int j=0;j<pdIds.size();j++){
StaticHTMLFile.PrintPage("E:/workspace/spring2Test/pdIds" +
"_" +
dstIds.get(i)+
"_" +
pdIds.get(j)
+
".xml",
"http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx/getTVprogramDateSet?theTVchannelID=" +
pdIds.get(j)+
"&theDate=" +
"2009-02-20" +
"&userID="
);
tvShow= dx.builder("pdIds_"+dstIds.get(i)+"_"+pdIds.get(j)+".xml");
//测试 tvShow
/*System.out.println(tvShow[0]);
System.out.println(tvShow[1]);
*测试成功
AM
07:00晨曲
07:03重播:美嘉购物
14:00重播:都市商报
14:30重播:美嘉购物
PM
18:15元富财经
18:37都市商报
19:09股海罗盘
19:30湖北新闻联播
19:51天气预报
19:55直播:美嘉购物
23:55重播:美嘉购物
02:00夜曲
*
*
*/
//把tvshow的数据输出到html()
s2h.builderHtml(tvShow, dstIds.get(i), pdIds.get(j));
}
}
}
}
把数据转换成html的代码
public class String2Html {
public static void builderHtml(String[] strS,int i,int j) throws IOException, TemplateException{
//初始化freeMarker
File file=null;
file=new File("E:\\workspace\\spring2Test\\htmlTest\\");
Configuration cf=null;
cf=new Configuration();
cf.setDirectoryForTemplateLoading(file);
Template template=null;
template=cf.getTemplate("tvShow.ftl");
Map<String,String[]> root=null;
root=new HashMap<String,String[]>();
root.put("tvShow", strS);
Writer out=null;
//下面的文件名: 电视台id_频道id_时间.html
out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("E:/workspace/spring2Test/htmlTest/"+i+"_"+j+"_"+".html")),"utf-8"));
template.process(root, out);
}
}
//这里是原始的代码,需要好好整理整理。最好用soap
分享到:
相关推荐
在Java中,现代的Web Service实现已经转向了Apache CXF、JAX-WS(Java API for XML Web Services)和Spring-WS等框架,它们提供了更强大的功能和更好的性能。然而,XFire作为早期的框架,对于理解Web Service的基本...
在提供的资源中,“web service_demo.rar”可能是.NET Web Service的示例代码或部署文件,“cilentDemo.rar”可能是Java客户端的示例代码,“Java调用webservice类的方法.txt”可能包含了具体的Java调用步骤或代码...
这个步骤通常涉及使用IDE的工具来自动生成客户端代码,这些代码将根据提供的WSDL文件来调用Web Service。在NetBeans中,你可以通过右击项目,选择“New”>“Other”>“Web Services”>“Web Service Client”,然后...
java web service 教程java web service 教程java web service 教程java web service 教程java web service 教程java web service 教程java web service 教程java web service 教程java web service 教程java web ...
Java调用Java Web Service是Java开发中的一个常见任务,它涉及到Web服务的消费与交互,主要基于SOAP(Simple Object Access Protocol)协议。本篇将详细阐述这个过程,并结合标签“源码”和“工具”,探讨如何通过源...
使用Java创建RESTful Web Service 在本文中,我们将讨论如何使用Java创建RESTful Web服务。REST(Representational State of Resource)是一种架构风格,它于2000年由Roy Fielding博士提出。RESTful Web服务是一种...
Java RESTful Web Service实战是Java开发领域中一个重要的实践教程,它主要涵盖了使用Java技术和RESTful架构风格来创建高效、可扩展的网络服务。REST(Representational State Transfer)是一种网络应用程序的设计...
### Java Web Service 教程详解 #### 一、引言 在现代软件开发领域中,Web服务技术扮演着至关重要的角色。它不仅为不同应用程序之间的交互提供了标准的方式,还极大地促进了分布式系统的构建和发展。本教程旨在...
Java Restful Web 源代码Java Restful Web 源代码Java Restful Web 源代码Java Restful Web 源代码Java Restful Web 源代码Java Restful Web 源代码Java Restful Web 源代码Java Restful Web 源代码Java Restful Web...
《Java RESTful Web Service实战》PDF版本下载
在提供的压缩包文件"TestJava"中,可能包含了完整的Java调用.NET Web Service的示例代码,包括必要的配置文件和测试用例。通过分析和运行这些代码,可以深入理解Java如何与.NET Web Service进行有效交互。 总结来说...
Java Web Service是一种基于标准的、平台无关的、用于构建分布式应用程序的技术,它允许服务提供者和服务消费者通过网络进行通信。客户端实现Java Web Service主要包括三种方式:生成的Stub、动态代理和动态调用接口...
本教程将深入讲解如何使用Java语言来创建RESTful Web Service。 首先,我们需要理解REST的基本概念。REST是一种架构风格,它通过HTTP协议与Web服务器进行通信,主要利用GET、POST、PUT、DELETE等HTTP方法来操作资源...
Java RESTful Web Service是现代Web应用开发中的一个重要概念,它基于Representational State Transfer(表述性状态转移)架构原则,提供了一种轻量级、高效且易于理解和实现的接口设计方式。在本PDF教程《Java ...
JAVA Web service 开发实例
综上所述,"Web service on java"这个主题涵盖了许多方面,从基础的Web服务概念到具体的Java实现技术,再到实际应用中的安全、扩展性和性能优化。这本书可能详细介绍了这些内容,帮助读者深入理解并掌握在Java平台上...
Java作为支持Web服务的重要编程语言之一,它提供了多种API来创建Web服务。根据给出的内容,我们将详细解释Java Web服务规范、开发工具以及服务端和客户端的开发流程。 ### Java Web服务规范 Java Web服务规范主要...
本文档将详细介绍如何使用C++调用Java编写的Web Service(简称Webservice),并通过具体的步骤和示例帮助读者理解这一过程。 #### 二、技术基础 - **SOAP (Simple Object Access Protocol)**:一种轻量级协议,用于...