【问题标题】:Build XML with CSV data使用 CSV 数据构建 XML
【发布时间】:2018-11-10 10:10:25
【问题描述】:

我正在尝试构建一种方法来在本地“上传”一个 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>

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

【问题讨论】:

    标签: javascript html csv d3.js xml-parsing


    【解决方案1】:

    您可以使用以下示例作为指导。这需要 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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多