java简单实现xml网站地图

news/2024/5/10 8:35:25/文章来源:https://blog.csdn.net/booy123/article/details/108187908

本来用某鱼抓取整理网站url的,结果超过一万条要付费充会员导出,有点郁闷,怎么办?因为java爬虫还不怎么会,就只有拼接了,想想就是查库然后转换成xml,勤快点自己动手。
获取网站url的后缀地址,一般都是id主键,先获取id,然后进行字符串拼接,最后输出成xml,这里采用springboot+mybatis+xStream。
引入依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.booy</groupId><artifactId>url</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><!--引入springboot父版本--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.2.RELEASE</version><relativePath/></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mybatis包--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency><!-- mysql驱动包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.29</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.11.1</version></dependency></dependencies><!--配置资源文件扫描,否则Mapper--><build><!--将springboot的应用程序打包成fat jar的插件--><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.*</include></includes></resource></resources></build>
</project>

要查库,需要先配置下数据源

#数据源的基本信息
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
spring.datasource.username=test
spring.datasource.password=123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver
#mybatis中mapper文件的路径
mybatis.mapper-locations=classpath*:com/booy/url/dao/mapper/*.xml
#起别名,可省略写mybatis的xml中的resultType的全路径
mybatis.type-aliases-package=com.booy.url.pojo
#视图解析器,规定访问资源路径的后缀
spring.mvc.view.suffix=.html

接口

package com.booy.url.dao;import java.util.List;public interface UrlDao {List<Integer> getAllId();
}

mapper查询

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.booy.url.dao.UrlDao"><select id="getAllId"  resultType="int">select web_idfrom test_website</select>
</mapper>

service接口

package com.booy.url.service;import java.util.List;public interface UrlService {List<StringBuilder> getAllId();
}

业务逻辑实现,如果一个表数据超过5万可以做下判断,写入到第二个xml,需要多个表写入到一个xml中,就别覆盖了,直接数据追加即可

package com.booy.url.service.Impl;import com.booy.url.dao.UrlDao;
import com.booy.url.pojo.Url;
import com.booy.url.service.UrlService;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.Xpp3Driver;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;@Service
public class UrlServiceImpl implements UrlService {@Resourceprivate UrlDao urlDao;@Overridepublic List<StringBuilder> getAllId() {//前后字符串String urlPre = "http://www.zhuangyi.net/w/";String urlSuf = ".html";//存放urlList<StringBuilder> urls = new ArrayList<>();//存放xml的url对象List<Url> urlsXml = new ArrayList<>();List<Integer> allId = urlDao.getAllId();for (Integer id : allId) {StringBuilder sb = new StringBuilder(40);sb.append(urlPre).append(id).append(urlSuf);urls.add(sb);//构建单个对象Url url = simpleObject(sb);//将对象添加进集合urlsXml.add(url);}//将对象集合输出为xml文档outXml(urlsXml);return urls;}//构建单个对象public Url simpleObject(StringBuilder sb){//设置当前时间Date nowDate =new Date(System.currentTimeMillis());DateFormat df = new SimpleDateFormat("yyyy-MM-dd");String now = df.format(nowDate);//构建输出对象Url url = new Url();String sb1 = new String(sb);url.setLoc(sb1);url.setPriority("0.6");url.setChangefreq("always");url.setLastmod(now);return url;}//将对象集合输出为xmlpublic void outXml(List<Url> urlsXml){FileOutputStream out=null;try {out = new FileOutputStream("D:/xml/sitemap.xml");//默认覆盖} catch (FileNotFoundException e) {e.printStackTrace();}//通过驱动构建一个xStream对象XStream xStream = new XStream(new Xpp3Driver());//修改别名Url.class为urlxStream.alias("url",Url.class);xStream.alias("urlset",List.class);//生成xml文件
//        xStream.toXML(urlsXml,out);不带头输出String top ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";String s = top + xStream.toXML(urlsXml);try {out.write(s.getBytes());out.close();} catch (IOException e) {e.printStackTrace();}System.out.println(s);}
}

xml元素实体

package com.booy.url.pojo;public class Url {private String loc;private String priority;private String lastmod;private String changefreq;//getter and setter
}

在页面上看看url

@RestController
public class resultcontroller {@Resource private UrlService urlService;@RequestMappingpublic List<StringBuilder> test(){return urlService.getAllId();}
}

启动类

@SpringBootApplication
@MapperScan(basePackages = "com.booy.url.dao")
public class UrlApplication {public static void main(String[] args) {SpringApplication.run(UrlApplication.class, args);}
}

控制台输出,实际就别控制台和页面上输出了
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_905393.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

引路蜂Android技术网站开通了

之前在引路蜂技术博客我们花了大量的篇幅介绍了Android开发的相关知识&#xff0c;距离上次介绍Android开发已经有一年有余&#xff0c;这期间Android版本也有了很大的变化&#xff0c;好在Android的版本的基本支持向下兼容&#xff0c;因此以前的介绍的技术基本上还是适用的&a…

开启智慧的10大网站--非常值得收藏!

NO1,大学资源网&#xff1a; http://www.dxzy163.com/ 优点&#xff1a;课程非常多&#xff0c;里面课程质量非常高&#xff0c;并且不注册、不收费&#xff0c;实在太棒了&#xff0c;一直使用当中&#xff01; 缺点&#xff1a;有个别课程无法播放。 大学资源网致力于为每…

一例千万级pv高性能高并发网站架构

受CU管理员的邀请参考“千万级pv高性能高并发网站架构与设计交流探讨帖”主题的交流&#xff0c;发表了一案例与大家分享。 一个支撑千万级PV的网站是非常考验一个架构是否成熟、健壮(本文不涉及软件架构的层面&#xff0c;有兴趣也可以讨论)。现抛出一个系统层面的架构&…

《网站被黑》

目录 一&#xff0c;补充知识 1&#xff0c;黑客攻击的步骤与防范 &#xff08;1&#xff09;网络本身存在的安全缺陷 &#xff08;2&#xff09;黑客攻击的步骤 &#xff08;3&#xff09;黑客攻击的方法 &#xff08;4&#xff09;黑客攻击的防范&#xff08;被攻击前怎…

大型网站系统架构演化之路

前言 一、最开始的网站架构 二、应用、数据、文件分离 三、利用缓存改善网站性能 四、使用集群改善应用服务器性能 五、数据库读写分离和分库分表 六、使用CDN和反向代理提高网站性能 七、使用分布式文件系统 八、使用NoSql和搜索引擎 九、将应用服务器进行业务拆分 十、搭建分…

Google分析中阻止垃圾SEO流量6种方法

当您担心假流量时,谁会关心假新闻?几年前,垃圾邮件是您电子邮件收件箱中的垃圾邮件。不久之后,电子邮件提供商创建了阻止垃圾邮件进入您的收件箱的过滤器,似乎您不必再担心它了。快乐的时光!但是,既然您已经拥有了一个网站,则垃圾邮件已重新成为您的雷,它正在追随您的…

今年应避免的网站营销错误

如果您希望您的企业拥有成功的互联网存在,会与您分享您在2019年应避免的7个营销错误。 如果没有网站,您就无法在当前的氛围中开展业务,并且您最需要该页面将访客转化为客户。以下七个提示可以帮助您使您的网站远离失败的境界。 您是否发现自己的网站流量充足,但客户却不是…

留意这5个黑帽SEO的迹象

黑帽SEO指的是帮助网站在谷歌排名更高的不道德行为。很多时候,一个网站甚至不知道它遭受黑帽搜索引擎优化 - 并因此而受到惩罚。 虽然黑帽可以暂时帮助谷歌的网站排名更高,搜索引擎最终会因为不良做法而降级。你需要知道如何识别黑帽SEO技术。以下是您网站和其他网站需要查看…

SEO的最佳URL结构是什么?

您的许多访问者都会通过点击链接访问您的网站,因此您可能想知道特定网页的实际网址中的内容是否真实重要。 您可能会惊讶地发现,当谈到现场搜索引擎优化时,您的网址看起来真的非常重要。 一、什么是URL结构? 您的网站URL作为您在网络上的地址。这是有人访问您网站页面的最…

通过关键词广告提高网站曝光和信任度

关键字广告和搜寻引擎优化 (SEO) 之间互相影响,协作使用时,可以达到更好的效果。 品牌曝光和信任 由于法例所限需要注明该片段为广告内容。一般人都知道广告是以钱换取曝光,对广告内容的信任程度会打折。但从心理学研究知道存在单纯曝光效应 Mere Exposure Effect,就是说…

关键词后计划时代的SEO成功4个技巧

如果您还没有收到或没有注意到,Google现在会限制关键字规划中的搜索量,以便为“每月支出较低”付费搜索的用户提供搜索量。这意味着,如果您没有在付费搜索上花费足够,那么“免费”工具对于确定有多少人搜索特定关键字实际上毫无用处。 对于许多使用该工具进行研究但没有资金…

SEO:HTML,XML网站地图介绍

站点地图有两种类型:HTML和XML。HTML网站地图主要是用来指导访问者的。XML网站地图可指导搜索引擎机器人,确保他们找到要索引的网站URL 。了解它们各自的优缺点将有助于您的搜索引擎优化。 XML网站地图 XML使信息机器可读。XML网站地图为搜索引擎提供了网站上URL的有效列表。…

您选择的虚拟主机类型会影响您的SEO?

标题 一、您的虚拟主机计划可以影响SEO吗&#xff1f; 谈到SEO&#xff0c;细节很重要。其中一个通常被忽视的细节是您选择的网络主机。通常&#xff0c;这是人们想到的最后一件事。 但是&#xff0c;您使用的托管类型会对您的排名产生重大影响。影响的程度取决于您网站的规模…

简单的小说阅读网站JavaWeb项目

暂时介绍一下这个项目目前有哪些功能 这是项目的主页 这是登录界面 这是注册页面 使用普通用户登录后 这是书酷界面 这是排行界面 这是书架界面 这是个人信息界面 这是书籍详情页 使用管理员登录后的用户信息界面 这是小说阅读页面 这是目录 这是一个音乐小插件&…

【实践】python 提取网站里面的汉字

提取网站里面的汉字 1、引入模块 requests&#xff08;用于获取网站上的数据&#xff09;&#xff1b;json&#xff08;用于解析json数据&#xff09; # codingutf-8 import requests as r import json2、写入到txt a作为追加&#xff0c;不清空之前的数据 txt open("…

Struts,MVC 的一种开放源码实现用这种servlet和JSP框架管理复杂的大型网站

(转载自IBM developerWorks中国网站 java 专区,http://www-900.ibm.com/developerWorks/java/j-struts/index.shtml) Malcolm Davis顾问2001 年 2 月 内容&#xff1a; 简介 JSP 就是 servlet 别在我的 HTML 中使用太多的 Java MVC MVC Model 2 Struts 详细分析 Struts 邮件列表…

Struts,MVC 的一种开放源码实现用这种servlet和JSP框架管理复杂的大型网站

(转载自IBM developerWorks中国网站 java 专区,http://www-900.ibm.com/developerWorks/java/j-struts/index.shtml) Malcolm Davis顾问2001 年 2 月 内容&#xff1a; 简介 JSP 就是 servlet 别在我的 HTML 中使用太多的 Java MVC MVC Model 2 Struts 详细分析 Struts 邮件列表…

Struts,MVC 的一种开放源码实现用这种servlet和JSP框架管理复杂的大型网站

(转载自IBM developerWorks中国网站 java 专区,http://www-900.ibm.com/developerWorks/java/j-struts/index.shtml) Malcolm Davis顾问2001 年 2 月 内容&#xff1a; 简介 JSP 就是 servlet 别在我的 HTML 中使用太多的 Java MVC MVC Model 2 Struts 详细分析 Struts 邮件列表…

哪些权重7权重8的网站怎么做的!我的站就是这么做的!轻量级泛目录无需数据库适合所有网站所有cms只需要放在根目录即可

如题&#xff1a;哪些权重7 权重8的站都是怎么做上来的&#xff01; 疫情期间大家都不好赚钱&#xff0c;出不了门&#xff0c;我偶尔让朋友看了一下我的站&#xff01; 他也想做网站了&#xff0c;然后问我要插件&#xff01;先上图 https://www.bilibili.com/video/BV1me41…

SEO,关键词扩充,文章自动生成,相关说明教程

比如说你的文章标题是&#xff1a;怎么写好一篇作文&#xff08;好作文怎么写&#xff09; ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 通过插件获取标题然后 获得更多相关词 ​ 编辑切换为居中 添加图片注释&#xff0c;不超…