#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. Большое вам спасибо