【发布时间】:2020-05-15 18:57:33
【问题描述】:
我想将下面的 CSV 转换为 XML
CSV 输入示例
01,TeacherHeader1
02,StudentHeader1
03,SubjectHeader1
10,Grade1,Score99
10,Grade2,Score99
48,SubjectTrailer1
49,StudentTrailer1
02,StudentHeader2
03,SubjectHeader1
10,Grade1,Score50
10,Grade2,Score50
48,SubjectTrailer1
49,StudentTrailer2
50,TeacherTrailer1
输出应该是
<FileHeader>
<id>01</id>
<name>TeacherHeader1</name>
</FileHeader>
<GroupRecord>
<GroupHeader>
<id>02</id>
<name>StudentHeader1</name>
</GroupHeader>
<AccountRecord>
<AccountHeader>
<id>03</id>
<name>SubjectHeader1</name>
</AccountHeader>
<AccountDetails>
<Details>
<id>10</id>
<name>Grade1</name>
<value>Score99</value>
</Details>
<Details>
<id>10</id>
<name>Grade2</name>
<value>Score99</value>
</Details>
</AccountDetails>
<AccountTrailer>
<id>48</id>
<name>SubjectTrailer1</name>
</AccountTrailer>
</AccountRecord>
<GroupTrailer>
<id>49</id>
<name>StudentTrailer1</name>
</GroupTrailer>
</GroupRecord>
<GroupRecord>
<GroupHeader>
<id>02</id>
<name>StudentHeader2</name>
</GroupHeader>
<AccountRecord>
<AccountHeader>
<id>03</id>
<name>SubjectHeader1</name>
</AccountHeader>
<AccountDetails>
<Details>
<id>10</id>
<name>Grade1</name>
<value>Score99</value>
</Details>
<Details>
<id>10</id>
<name>Grade2</name>
<value>Score99</value>
</Details>
</AccountDetails>
<AccountTrailer>
<id>48</id>
<name>SubjectTrailer1</name>
</AccountTrailer>
</AccountRecord>
<GroupTrailer>
<id>49</id>
<name>StudentTrailer2</name>
</GroupTrailer>
</GroupRecord>
<FileTrailer>
<id>50</id>
<name>TeacherTrailer1</name>
</FileTrailer>
在哪里
01 = FileHeader
02 = GroupHeader (grouped inside GroupRecord)
03 = AccountHeader (grouped inside AccountRecord)
10 = Details (grouped inside AccountDetails)
48 = AccountTrailer (grouped inside AccountRecord)
49 = GroupTrailer (group inside GroupRecord)
50 = FileTrailer
我想将上面的 CSV 转换为结构正确的 XML,如上所示。 任何帮助将不胜感激。谢谢。
【问题讨论】:
-
使用
unparsed-text(-lines)加上tokenize您应该能够将文本转换为XML。然后你可以使用普通的xsl:for-each-group。我不确定您到底需要哪种方法,由于它的格式,您想要的输出似乎表明 XML 未显示的 soem 嵌套,您可能想要改进格式并删除 XML 不应该嵌套的任何缩进。 -
感谢您的回复。我确实在帖子下方添加了一些图例,以指出每个记录标识符的标签是什么(这是 CSV 上每行的前两个字符),并指出应该放置或分组的位置。您可以通过复制 XML 并使用外部编辑器来正确格式化它。
-
希望有人能尽快帮助我:(
-
CSV有
Score99和Score50,为什么输出为XML只有Score99? -
我的错 - 这是复制粘贴时的拼写错误。
标签: xml csv xslt xslt-2.0 xslt-grouping