Мне нужно создать XML-файл из CSV-файла, который не сохраняет первую строку в виде тегов

#xml #vb.net #linq

#xml #vb.net #linq

Вопрос:

я пытаюсь написать программу, которая преобразует 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:DatacsvtoxmlTEST.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:DatacsvtoxmlTEST.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, статус 17057, ACCT, Финансовый Acct, ACCT 23071 Финансовый Acct, 28.01.2019 10:00, 28.01.2019 10:50, Тестовый класс, Запад, комната 24, Академический курс, Школа делового администрирования, A

Комментарии:

1. From strs In source.Skip(1)

2. Большое вам спасибо

Ответ №1:

Вы хотите Skip первую строку. source это массив строк — просто пропустите первый элемент при его повторении:

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

Комментарии:

1. Большое вам спасибо