如何创建将列出目录中所有XML文件的动态网页?

时间:2015-04-26 15:58:09

标签: xml html5 xslt dom

我在目录中有大约200个XML文件,这些文件会定期更改。目标是拥有一个"主页"抓住了一个标题'每个XML文件中的元素然后创建一个动态目录 - 我宁愿不手动编辑新的HTML"主页"每次更改,删除或添加文件时。

有什么建议吗?尝试寻找答案已被证明是徒劳无功的。

2 个答案:

答案 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非常简单。

希望这篇文章能帮助某人完成工作。