NodeJS生成XML文件 发表于 2025-03-04 | 分类于 nodejs NodeJS生成XML文件 基本示例安装依赖 1npm install xml2js 代码示例 12345678910111213141516171819202122232425262728293031const fs = require('fs');const xml2js = require('xml2js');// 定义要转换为 XML 的 JavaScript 对象const data = { gameList: { game: [ { path: './megaman.zip', name: "L 洛克人-力量之战[LKRLLZZ]", image: './media/images/Mega Man - The Power Battle_screenscraper_mix_arrm.png', video: "./media/videos/mbombrd.mp4" } ] }};// 创建 XML 构建器实例const builder = new xml2js.Builder();// 将 JavaScript 对象转换为 XML 字符串const xml = builder.buildObject(data);// 写入文件fs.writeFile('gamelist.xml', xml, 'utf8', (err) => { if (err) { console.error('写入文件时发生错误:', err); } else { console.log('XML 文件已成功生成: gamelist.xml'); }}); 文件遍历生成根据文件夹下文件生成 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869const fs = require('fs');const xml2js = require('xml2js');const path = require('path');// 定义递归查找文件的函数function findFilesInDirectory (dir, files = []) { // 读取指定目录下的所有文件和文件夹 const entries = fs.readdirSync(dir, { withFileTypes: true }); for (const entry of entries) { const fullPath = path.join(dir, entry.name); if (entry.isDirectory()) { // 如果是文件夹,则递归调用函数继续查找 findFilesInDirectory(fullPath, files); } else { // 如果是文件,则获取相对路径并添加到结果数组中 const relativePath = path.relative(process.cwd(), fullPath); files.push(relativePath); } } return files;}// 定义要转换为 XML 的 JavaScript 对象const data = { gameList: { game: [ ] }};let targetDirectory = "F:\\Roms\\SFC"try { // 调用函数查找文件 const foundFiles = findFilesInDirectory(targetDirectory); // 打印找到的文件的相对路径 console.log('找到的文件的相对路径:'); foundFiles.forEach(file => { let fileName = path.basename(file) let filePath = file.replace(targetDirectory, ".") console.log(fileName); console.log(filePath); data.gameList.game.push({ path: filePath, name: fileName, image: "", video: "" }) });} catch (error) { console.error('查找文件时出错:', error);}// 创建 XML 构建器实例const builder = new xml2js.Builder();// 将 JavaScript 对象转换为 XML 字符串const xml = builder.buildObject(data);let xmlPath = path.join(targetDirectory, "gamelist.xml")// 写入文件fs.writeFile(xmlPath, xml, 'utf8', (err) => { if (err) { console.error('写入文件时发生错误:', err); } else { console.log('XML 文件已成功生成: gamelist.xml'); }});