sitemap.xml生成(go语言版)

遍历一个文件夹及其子目录下的html文件,生成sitemap.xml

go 复制代码
package main

import (
	"fmt"
	"os"
	"path/filepath"
	"strings"
)

func main() {
	// 指定要遍历的文件夹
	htmlDir := `E:\workPlace\project\AITools\web-ssg\.output\public`

	// 创建sitemap.xml文件
	smFile, err := os.Create("sitemap.xml")
	if err != nil {
		fmt.Println("Error creating sitemap.xml:", err)
		return
	}
	defer smFile.Close()

	// 写入sitemap.xml文件的头部
	smFile.WriteString(`<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
`)

	// 遍历HTML文件,生成sitemap.xml文件的内容
	err = filepath.Walk(htmlDir, func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}

		if !info.IsDir() && strings.HasSuffix(info.Name(), ".html") {
			relPath, err := filepath.Rel(htmlDir, path)
			if err != nil {
				return err
			}

			// 获取文件的修改时间
			lastmod := info.ModTime().Format("2006-01-02")

			// 写入sitemap.xml文件的内容
			smFile.WriteString(fmt.Sprintf(`<url>
    <loc>https://www.toolsj.cn/%s</loc>
    <lastmod>%s</lastmod>
</url>
`, relPath, lastmod))
		}

		return nil
	})

	if err != nil {
		fmt.Println("Error walking through directory:", err)
		return
	}

	// 写入sitemap.xml文件的尾部
	smFile.WriteString(`</urlset>
`)

	fmt.Println("sitemap.xml generated successfully.")
}
相关推荐
2501_941111998 分钟前
C++中的装饰器模式变体
开发语言·c++·算法
树下水月30 分钟前
python 连接hive2 数据库
开发语言·数据库·python
Tom4i32 分钟前
Kotlin 中的 inline 和 reified 关键字
android·开发语言·kotlin
凄戚36 分钟前
bash和命令
开发语言·chrome·bash
Evan芙38 分钟前
Bash 变量命名规则与类型使用
linux·运维·开发语言·chrome·bash
在人间负债^1 小时前
Rust 实战项目:TODO 管理器
开发语言·后端·rust
爱吃烤鸡翅的酸菜鱼1 小时前
用【rust】实现命令行音乐播放器
开发语言·后端·rust
全栈陈序员1 小时前
用Rust和Bevy打造2D平台游戏原型
开发语言·rust·游戏引擎·游戏程序
黛琳ghz1 小时前
用 Rust 从零构建高性能文件加密工具
开发语言·后端·rust
悟世君子1 小时前
Rust 开发环境搭建
开发语言·后端·rust