`
penuel
  • 浏览: 31144 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过URL接口定时读取其返回的xml(可存入数据库)

    博客分类:
  • XML
阅读更多
之前都是直接读取xml文件的,可是这次做东西对方只提供一个URL返回xml,我需要定时读取。
解决方案:
1:通过URL和URLConnection来解析改URL,使其返回inputstream
2:用dom4j解析该inputstream,将解析的数据封装成需要的对象,来存入一个List或Map
3:定义一个Controller来执行该过程
4:用crontab来执行定时任务(linux下,执行crontab -e进行编辑)
    @Get("/load")  
        public String loadDataFromXmlByDate(Invocation inv, @Param("begin") Date datebegin,  
                @Param("end") Date dateend) {  
            String begin = DateTimeUtil.getFormatDateTime(datebegin, "yyyyMMdd");  
            String end = DateTimeUtil.getFormatDateTime(dateend, "yyyyMMdd");  
    //      String ip = inv.getRequest().getRemoteAddr();  
            String URL = WbConstant.URL + WbConstant.URL_DATE_BEGIN + begin  
                    + WbConstant.URL_DATE_END + end;  
            List<Statistic> stats = parseXML(URL);  
            for (int i = 0; i < stats.size(); i++) {  
                Statistic st = stats.get(i);  
                st.setTime(datebegin);  
                //通过service层来执行逻辑并存储到DB  
                IResult result = dataService.createStatistic(st);  
                if (result.isSuccess()) {  
                    if (logger.isInfoEnabled()) {  
                        logger.info("insert data into db from xml success");  
                    }  
                } else {  
                    if (logger.isInfoEnabled()) {  
                        logger.info(result.getResult("error").toString());  
                    }  
                }  
            }  
            return "ok";  
        }  
        /** 
         * 加载默认日期的xml 
         * @param inv 
         * @return 
         */  
        @Get("/loadDefault")  
        public String defaultLoadDateFromXml(Invocation inv) {  
            Date today = new Date();  
            Calendar cal = Calendar.getInstance();  
            cal.add(Calendar.DATE, -1);  
            Date yesterday = cal.getTime();  
            return loadDataFromXmlByDate(inv, yesterday, today);  
        }  
      
        private List<Statistic> parseXML(String URL) {  
            long beginTime = System.currentTimeMillis();  
            List<Statistic> xmlList = new ArrayList<Statistic>();  
            SAXReader reader = new SAXReader();  
            URL url = null;  
            try {  
                url = new URL(URL);  
            } catch (MalformedURLException e) {  
                logger.error("给定的URL生成错误", e);  
            }  
            try {  
                URLConnection urlConnection = url.openConnection();  
                InputStream urlIn = urlConnection.getInputStream();  
                doc = reader.read(urlIn);  
            } catch (IOException e) {  
                logger.error("IOException:通过URL-openConnection-getInputStream时,错误",  
                        e);  
            } catch (DocumentException e) {  
                logger.error("DocumentExcepion:SAXReader解析inputsream为Document时,错误",  
                        e);  
            }  
            Element root = doc.getRootElement();  
            for (Iterator<Element> it = root.elementIterator(); it.hasNext();) {  
                Element e = (Element) it.next();  
                String date = e.elementText("date");  
                String pid = e.elementText("pid");  
                String data = e.elementText("data");  
                //封装数据为对象  
                Statistic stat = new Statistic();  
                stat.setHomeCount(Integer.parseInt(data));  
                stat.setPid(pid);  
                stat.setTime(DateTimeUtil.getFormatDate(date));  
                xmlList.add(stat);  
            }  
            long endTime = System.currentTimeMillis();  
            System.out.println("共花费时间为" + (endTime - beginTime) + "ms");  
            return xmlList;  
        }  

上面的controller写完了,就可以用crontab来执行定时任务了,该controllerURL为,xxx.com/loadDefault则,定为每天下午2点钟执行一次如下
00 14 * * * wget -a /data/logs/wb/xml.log http://xxx.com/loadDefault
OK了,可以了
分享到:
评论

相关推荐

    java读取xml文件并存入数据库

    java从xml中读入数据并存入到sqlserver2005数据库中

    C#读取XML文件并写入数据库

    下面,我们将详细介绍三种使用C#读取XML文件并将其写入数据库的方法。 1. **使用XmlReader类逐行读取并写入** - `XmlReader` 是一个高效的流式读取器,不占用大量内存。通过创建`XmlReader`实例,我们可以逐个节点...

    java读取xml数据存入数据库

    java从xml中读取数据存入sqlserver2005数据库。 所需包请自己下。

    JSP页面解析XML并且存入数据库

    在IT行业中,JSP(JavaServer Pages)是一种用于创建...通过这些技术的结合,可以实现从Web客户端接收XML数据,然后在服务器端解析并存入数据库的功能。这样的解决方案在很多需要数据交换和存储的场景下都非常实用。

    定时读取excel更新到数据库

    在实际应用中,可能需要关注库存物料的短缺情况,通过定时读取Excel更新数据库,确保库存信息的实时性,从而支持供应链管理和决策。 综上所述,实现“定时读取Excel更新到数据库”的过程涉及到多个环节,包括定时...

    调用天气接口存入数据库---mysql

    本项目涉及的主题是“调用天气接口存入数据库—MySQL”,这是一套实现从网络获取天气预报数据并将其存储到MySQL数据库的流程。下面我们将详细探讨这个过程中的关键知识点。 首先,我们需要了解“天气接口”。这是一...

    解析wthrcdn.etouch的xml格式天气存入mysql数据库

    本文将深入探讨如何解析`wthrcdn.etouch.cn`提供的XML格式天气数据,并将其存入MySQL数据库。这个接口`http://wthrcdn.etouch.cn/WeatherApi?citykey=101040100`提供了全面且及时更新的天气信息,非常适合进行数据...

    图片存入数据库从数据库中读取图片.txt

    当将图片存入数据库时,通常会将其转换为字节数组,然后以`BLOB`(Binary Large Object)或`VARBINARY`类型存储于数据库表的一个字段中。此过程涉及到以下几个步骤: 1. **打开文件流**:通过`FileStream`类打开...

    C#操作XML,读取XML到数据库和增删改

    C# 语言可以轻松地操作 XML 文件,读取 XML 文件的内容并将其存储到数据库中。同时,C# 也可以对 XML 文件进行增删改操作。 读取 XML 文件 要读取 XML 文件,首先需要将 XML 文件加载到 XmlDocument 对象中。然后...

    将图片存入数据库,并从数据库中读取

    当我们谈论“将图片存入数据库,并从数据库中读取”时,我们实际上是在讨论一种数据存储策略,这种策略允许我们将图像文件作为二进制数据存储在数据库中,并能够按需检索出来。这种做法有其优点,例如方便数据集成和...

    C#将word文件存入数据库与读取

    本案例主要探讨如何使用C#编程语言将Word文件转换为二进制文件流并存入数据库,以及如何从数据库中读取并还原这些文件。下面我们将详细讲解这个过程。 首先,我们要了解将Word文件存储到数据库的基本原理。在C#中,...

    c#中把图片存入数据库并进行读取

    在C#编程中,将图片存入数据库以及从数据库中读取是一项常见的任务,尤其是在开发包含多媒体元素的应用程序时。数据库通常使用BLOB(Binary Large Object)类型来存储非结构化数据,如图像、音频或视频文件。以下是...

    C# winfrom操作xml_读写修改xml及写入数据库

    在本文中,我们将深入探讨如何使用C# WinForm应用程序来操作XML文件,包括读取、写入、修改XML数据,并将这些数据存入数据库。XML(eXtensible Markup Language)是一种灵活的数据交换格式,常用于存储结构化数据。...

    .net读取xml文件中数据存入数据库或excel

    压缩包内有源文件,分别有.net1.1和.net2.0两种,其中Authors.xml为一个模版xml文件,个人需要解析的xml文件要将文件头改为Authors.xml的文件头,即将编码方式改为标准。sqlstring.txt中有针对解析成excel和数据库的...

    C#读取图片文件存入数据库

    下面将详细讲解这个过程,包括如何读取图片、将其转换为二进制数据,以及如何从数据库中提取并还原图片。 首先,我们需要了解基本的C#文件操作。在C#中,可以使用`System.IO`命名空间中的`File`类来读取图片文件。...

    c#操作XML 读取、生成,WEBSERVICE接口

    本教程将深入探讨如何在C#中操作XML,包括读取和生成XML文档,并利用Web Service接口进行数据传输。 1. **C#操作XML:读取** 在C#中,我们可以使用`System.Xml`命名空间中的类来处理XML文档。其中,`XmlDocument`...

    从数据库中读取数据自动生成XML

    从数据库中读取数据自动生成XML 在本篇文章中,我们将讨论如何从数据库中读取数据自动生成XML文件。XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据。它广泛应用于各种领域,包括网络开发、...

    c++ 读取xml中的配置链接oracle数据库

    通过上述过程,你可以实现C++程序从XML配置文件中读取数据,然后连接到Oracle数据库进行进一步的操作。这个过程涉及到的技能包括XML解析、C++编程、以及Oracle数据库的连接与操作,这些都是IT行业中非常重要的基础...

    XML读取数据库信息

    在Java中,我们可以利用各种API来实现从数据库读取信息并生成XML文档。 首先,我们需要一个数据库连接。在Java中,我们通常使用JDBC(Java Database Connectivity)来与数据库进行交互。JDBC是Java中的一套接口和类...

    JAVA串口助手接收数据并解析数据存入MySQL数据库中

    在本文中,我们将深入探讨如何使用Java开发一个串口助手应用程序,该程序能接收来自串行端口的数据并将其解析后存储到MySQL数据库中。首先,我们需要了解串口通信的基本概念,然后学习Java如何处理串口输入,接着是...

Global site tag (gtag.js) - Google Analytics