我在目录中有大约200个XML文件,这些文件会定期更改。目标是拥有一个"主页"抓住了一个标题'每个XML文件中的元素然后创建一个动态目录 - 我宁愿不手动编辑新的HTML"主页"每次更改,删除或添加文件时。
有什么建议吗?尝试寻找答案已被证明是徒劳无功的。
答案 0 :(得分:1)
您需要某种服务器端方法来获取文件列表。一个可能的候选者(你可以使用XSLT进行转换)将是您的HTTP服务器显示目录列表的默认方法(您需要允许访问目录列表)文件,您可以在默认目录列表中指定某种XSLT,将其转换为您希望在主页中显示的内容。但是,这感觉有点笨拙,可能与您想要的其他安全策略不兼容。
如果您可以访问其他一些服务器端技术(php,Ruby,Python,Perl,ASP.NET等),那么可能还有更清晰/更易于维护的方法。但是使用仅您列出的技术是不可能的(至少没有来自您的httpd的一点帮助)。
答案 1 :(得分:0)
非常迟到的回复,但希望将来会来的人可以利用这个。
我认为你可以通过节点轻松完成。这是一个片段,它将遍历您传递的目录并将其加载到数组
中var fs = require('fs'); // import file system
var path = require('path'); //import path, used to resolve file path
var dir = <MAIN_DIR_PATH>; // DIr path were you want to search the xml file
var xmlFile = []; //Array in which xml file will be stored
logFileSystem(dir);
// Recursively checks for xml
function logFileSystem(dirPath) {
//Read the firectory
fs.readdir(dirPath, function(err, files) {
if (err) {
console.log("Could not read dir", err);
return;
}
//Loop through each file
files.forEach(function(file, index) {
var filePath = path.join(dirPath, file);
fs.stat(filePath, function(err, stat) {
if (err) {
console.log("Error stating file", err);
}
if (stat.isFile()) {
if (filePath.endsWith("xml")) {
console.log("This is xml file = ",filePath)
xmlFile.push(filePath)
}
}
// If directory call the api again recursively
if (stat.isDirectory()) {
logFileSystem(filePath);
}
})
})
})
}
您现在可以通过api调用将此内容返回给用户。使用节点创建api非常简单。
希望这篇文章能帮助某人完成工作。