如何使用xslt 1.0将固定长度的文本文件转换为使用偏移量和字段长度分隔的XML文件,

时间:2016-04-04 09:55:45

标签: c# xml xslt c#-4.0

我想知道是否可以使用XSL将固定长度的文本文件转换为XML文件。

特别针对以下示例。

我有一个看起来像这样的文本文件: 我用了 。代表显示目的的空间

.....1.....0.....0.....0.......0.......0.......0
.....2.....1.....0.....0.......0.......0.......0
.....3.....1.....2.....3.......0.......0.......0
.....4.....1.....2.....3.......1.......2.......3
使用偏移量和字段长度分隔

字段, 我的推测:

#MID#    offset = 0  length = 6 
#TID1#   offset = 7  length = 6 
#TID2#   offset = 13  length = 6 
#TID3#   offset = 19  length = 6 
#TITLE1# offset = 25  length = 8 
#TITLE2# offset = 33  length = 8 
#TITLE3# offset = 41  length = 8 

数据表将如下所示:

 ##MID##TID1##TID2##TID3##TITLE1##TITLE2##TITLE3#
 #   1#    0#    0#    0#      0#      0#      0#
 #   2#    1#    0#    0#      0#      0#      0#
 #   3#    1#    2#    3#      0#      0#      0#
 #   4#    1#    2#    3#      1#      2#      3#
 ################################################

我想通过使用C#.net和XSLT将传入的文本文件转换为XML文件(我猜微软没有提供XSLT 2.0处理器,在这种情况下只能使用XSLT 1.0,Saxon 9.x和XQSharp只是花费太多)

目标输出XML就像

<MID value='1'>
</MID>

<MID value='2'>
  <TID value='1'>
  </TID>
</MID>

<MID value='3'>
  <TID value='1'>
  </TID>
  <TID value='2'>
  </TID>
  <TID value='3'>
  </TID>
</MID>

<MID value='4'>
  <TID value='1'>
    <TID value='1'>
    </TID>
  </TID>
  <TID value='2'>
    <TID value='2'>
    </TID>
  </TID>
  <TID value='3'>
    <TID value='3'>
    </TID>
  </TID>
</MID>

非常感谢

1 个答案:

答案 0 :(得分:1)

XSLT 1.0需要XML文档作为输入。

如果您有一个可以读取文件并将其作为XML呈现的解析器,根据XSLT处理器,您仍然可以将非XML格式提供给转换:例如。读取CSV,JSON等,并将其作为一系列解析事件传递给XSLT引擎。

您的任务是读取您的CSV输入并将其转换为XML。你可以自己做,但随后任务就解决了,你不需要XSLT步骤。