我需要从csv文件创建一个xml文件,该文件不会将第一行保存为标记

问题描述 投票:0回答:1

我正在尝试编写一个将csv转换为xml的程序。在放入data之前,我的xml将csv的第一行保存为标记。我将粘贴我的代码和输出以便更好地理解。这是我的代码。

Imports System.IO
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text

Module Module1

    Sub Main()
        Dim source As String() = File.ReadAllLines("c:\Data\csvtoxmlTEST.CSV")
        Dim firstRow As Boolean = True
        Dim cust As XElement =
  <events>
      <%= From strs In source
          Let fields = Split(strs, ",")
          Select
<event EventIdentity=<%= fields(0) %>>
    <name><%= fields(1) %></name>
    <summary><%= fields(2) %></summary>
    <description><%= fields(3) %></description>
    <local-start-date-time><%= fields(4) %></local-start-date-time>
    <local-end-date-time><%= fields(5) %></local-end-date-time>
    <status><%= fields(11) %></status>
    <locations>
        <location>
            <name><%= fields(6) %></name>
            <location>
                <name><%= fields(7) %></name>
                <location>
                    <name><%= fields(8) %></name>
                </location>
            </location>
        </location>
    </locations>
    <categories>
        <category>
            <name><%= fields(9) %></name>
        </category>
    </categories>
    <custom-data><%= fields(10) %></custom-data>
</event>
      %>
  </events>
        cust.Save("c:\Data\csvtoxmlTEST.xml")

    End Sub

End Module

我的输出打印以下内容:

<?xml version="1.0" encoding="utf-8"?>
<events>
  <event EventIdentity="EventIdentity">
    <name>EventName</name>
    <summary>EventSummary</summary>
    <description>EventDescription</description>
    <local-start-date-time>EventStart</local-start-date-time>
    <local-end-date-time>EventEnd</local-end-date-time>
    <status>status</status>
    <locations>
      <location>
        <name>Location1_Name</name>
        <location>
          <name>Location2_Building</name>
          <location>
            <name>Location3_Room</name>
          </location>
        </location>
      </location>
    </locations>
    <categories>
      <category>
        <name>Category</name>
      </category>
    </categories>
    <custom-data>Department</custom-data>
  </event>
  <event EventIdentity="17057">
    <name>ACCT</name>
    <summary> Financial Acct</summary>
    <description>ACCT 23071 Financial Acct</description>
    <local-start-date-time>1/28/2019 10:00AM</local-start-date-time>
    <local-end-date-time>1/28/2019 10:50AM</local-end-date-time>
    <status>A</status>
    <locations>
      <location>
        <name>TestClass</name>
        <location>
          <name>West</name>
          <location>
            <name>room - 24</name>
          </location>
        </location>
      </location>
    </locations>
    <categories>
      <category>
        <name>Academic Course</name>
      </category>
    </categories>
    <custom-data>School of Business Administration</custom-data>
  </event>
</events>

我希望它保存我的xml并从<event EventIdentity="17057">开始,而不是<event EventIdentity="EventIdentity">

最后这是程序读取的我的测试csv文件:EventIdentity,EventName,EventSummary,EventDescription,EventStart,EventEnd,Location1_Name,Location2_Building,Location3_Room,Category,Department,status 17057,ACCT,Financial Acct,ACCT 23071 Financial Acct,1/28 / 2019 10:00 AM / 28/2019 10:50 AM,TestClass,West,room - 24,A School of School of Administration查看原文查看译文您认为译文质量如何?

xml vb.net linq
1个回答
1
投票

你想Skip第一排。 source是一个字符串数组 - 只需在迭代时跳过第一项:

  <%= From strs In source.Skip(1)
      Let fields = Split(strs, ",")
      Select
  ...
© www.soinside.com 2019 - 2024. All rights reserved.