匯出部落格園的內容並生成markdown檔案
阿新 • • 發佈:2021-06-29
作者:Grey
原文地址:匯出部落格園的內容並生成markdown檔案
部落格園支援備份功能:
操作時間是:
工作日18:00之後、8點之前或週六、週日進行備份。
點選備份,可以選擇時間段,匯出以後,是xml格式,樣例格式如下:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"> <channel> <title>部落格園-xxx</title> <link>https://www.cnblogs.com/xxx</link> <description>xxxx</description> <language>zh-cn</language> <lastBuildDate>Mon, 28 Jun 2021 12:48:06 GMT</lastBuildDate> <pubDate>Mon, 28 Jun 2021 12:48:06 GMT</pubDate> <ttl>60</ttl> <item> <title>文章3</title> <link>http://www.baidu.com</link> <dc:creator>作者名稱</dc:creator> <author>作者名稱</author> <pubDate>Mon, 21 Jun 2021 14:01:00 GMT</pubDate> <guid>http://www.baidu.com</guid> <description><![CDATA[這裡是正文資訊]]></description> </item> <item> <title>文章1</title> <link>http://www.baidu.com</link> <dc:creator>作者名稱</dc:creator> <author>作者名稱</author> <pubDate>Mon, 21 Jun 2021 14:01:00 GMT</pubDate> <guid>http://www.baidu.com</guid> <description><![CDATA[這裡是正文資訊]]></description> </item> <item> <title>文章2</title> <link>http://www.baidu.com</link> <dc:creator>作者名稱</dc:creator> <author>作者名稱</author> <pubDate>Mon, 21 Jun 2021 14:01:00 GMT</pubDate> <guid>http://www.baidu.com</guid> <description><![CDATA[這裡是正文資訊]]></description> </item> </channel> </rss>
可以通過解析xml,拿到每篇文章的內容標題,並且生成markdown文件,程式碼如下:
import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import java.io.File; import java.io.IOException; import java.net.URL; import java.text.ParseException; import java.util.Date; import java.util.Iterator; /** * 部落格園xml轉md文件 */ public class App { // 指定你要匯出的目錄 static final String path = "C:\\Users\\zhuiz\\OneDrive\\blogs"; public static void main(String[] args) throws DocumentException, IOException, ParseException { SAXReader reader = new SAXReader(); URL url = App.class.getClassLoader().getResource("sample.xml"); Document document = reader.read(url); Element root = document.getRootElement(); Element channel = null; for (Iterator<Element> it = root.elementIterator(); it.hasNext(); ) { channel = it.next(); } for (Iterator<Element> it = channel.elementIterator("item"); it.hasNext(); ) { Element item = it.next(); String title = item.element("title").getTextTrim(); String link = item.element("link").getTextTrim(); String prefix = "---\n" + "title: '" + title + "'\n" + "date: " + format(item.element("pubDate").getTextTrim()) + "\n\n\n\n" + "---\n\n\n\n" + "<meta name = \"referrer\" content = \"no-referrer\" />\n\n\n\n"; inputFile(title(title), link + "\n\n\n\n\n" + prefix + item.element("description").getText()); } } // 替換windows中非法檔名 public static String title(String invalidTitle) { return invalidTitle.replaceAll("[/\\\\:*?<>|]", "") + ".md"; } public static void inputFile(String title, String content) throws IOException { File file = new File(path, title); file.createNewFile(); FileUtil.appendString(content, file, "UTF-8"); } static String format(String stringDate) { return DateUtil.format(new Date(stringDate), "yyyy-MM-dd HH:mm:ss"); } }
使用說明:
- path指定你要匯出的markdown檔案放到哪裡
- 使用者匯出的xml檔案重新命名成sample.xml放在resources資料夾中
- 執行App.java
效果
原始碼地址:
待完善:
-
處理重名部落格。
-
程式碼可以重構一下。