【问题标题】:I need to create an xml file, from a csv file that doesnt save the first row as tags我需要从不将第一行保存为标签的 csv 文件创建一个 xml 文件
【发布时间】:2019-04-08 20:33:32
【问题描述】:

我正在尝试编写一个将 csv 转换为 xml 的程序。 我的 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 并以 &lt;event EventIdentity="17057"&gt; 开头,而不是 &lt;event EventIdentity="EventIdentity"&gt;

最后是程序读取的我的测试 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:00AM,1/28/2019 10:50AM,TestClass,West,room - 24,Academic Course,工商管理学院,A

【问题讨论】:

  • From strs In source.Skip(1)
  • 非常感谢您

标签: xml vb.net linq


【解决方案1】:

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

  <%= From strs In source.Skip(1)
      Let fields = Split(strs, ",")
      Select
  ...

【讨论】:

  • 非常感谢您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 2012-10-25
  • 2019-10-03
  • 2018-07-18
  • 1970-01-01
相关资源
最近更新 更多