使用CSV数据构建XML

时间:2018-05-31 11:46:50

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

我正试图建立一种方式来上传"本地的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数据&#34; SomeName,40.987654,-70.123456&#34;到...

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

我希望这很清楚;如果没有,请告诉我,我会尝试更好地阐述!

1 个答案:

答案 0 :(得分:1)

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

&#13;
&#13;
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);
&#13;
&#13;
&#13;