首页 > 解决方案 > 使用 CSV 数据构建 XML

问题描述

我正在尝试构建一种在本地“上传”csv文件并让它基于csv中的数据构建一个xml文件的方法。我需要在客户端完成所有这些工作,而且我对 JS 还不太熟悉。我已经想出了如何提取csv数据......

<html>
<head>
    <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
</head>
<body>
    <script>
       d3.select("body").append("input").attr("type", "file").attr("accept", ".csv").on("change", function() {
            var csv = d3.event.target.files[0];
                if (csv) {
                    var reader = new FileReader();
                        reader.onloadend = function(event) {
                        var Url = event.target.result;
                        d3.csv(Url, function(data) {
                            return {
                                name: data.name,
                                latitude: data.latitude,
                                longitude: data.longitude
                            };
                        }, function(rows) {
                            console.log(rows);
                        });
                    };
                reader.readAsDataURL(csv);
                }
            })
    </script>
</body>
</html>

...我希望遍历数据以构建 xml。我想要一些指导或建议的地方是如何构建 xml 并在之后将其下载为文件。DOM 是否适合这项工作?如果是这样,我怎样才能让它从 abc.csv 生成后下载 abc.xml?我正在尝试将 cvs 数据 "SomeName,40.987654,-70.123456" 转换为...

<Entry>
    <name>SomeName</name>
    <Location>
        <coordinates>-70.123456,40.987654</coordinates>
    </Location>
</Entry>

我希望这很清楚;如果没有,请告诉我,我会尽量详细说明!

标签: javascripthtmlcsvd3.jsxml-parsing

解决方案


您可以使用以下示例作为指南。这需要 NPM 包xml-parser作为依赖项。

var xmlDoc = [
  {
    type: 'element',
    tagName: '?xml',
    attributes: {
      version: '1.0',
      encoding: 'UTF-8'
    },
    childNodes: [],
    innerXML: '>',
    closing: false,
    closingChar: '?'
  },
  {
    type: 'element',
    tagName: 'root',
    attributes: {},
    childNodes: [
      {
        type: 'text',
        text: 'Root Element'
      }
    ],
    innerXML: 'Root Element',
    closing: true,
    closingChar: null
  }
]
 
var xmlStr = xml.stringify(xmlDoc, 2); // 2 spaces
 
console.log(xmlStr);


推荐阅读