如何将结构化文本文件转换为 XML 文件 API
本文关键字:文件 转换 XML API 文本 结构化 | 更新日期: 2023-09-27 18:31:48
我有一个结构化的文本文件,每个信息都按其位置(偏移量)和长度定位,例如,这一行取自文本文件:
H00VLS1 1200 32D1 20140602080524WIRE SPEC DATA
以下是提取数据的规则:
HEADER_ID length(3) offset(1)
PRODUCT_NO length(15) offset(4)
SORT_FIELD length(9) offset(19)
SUFFIX length(9) offset(28)
PERSON_CODE length(5) offset(33)
PROCESS_DATE length(8) offset(38)
MAINTENANCE_DATE length(8) offset(46)
最后,应用此规则后,我们得到以下数据:
HEADER_ID PRODUCT_NO SORT_FIELD SUFFIX PERSON_CODE PROCESS_DATE MAINTENANCE_DATE
H00 VLS1 1200 32D1 20140 60208 0607WIRE SPEC DA
生成的 XML 文件:
<header>
<header_id>H00</header_id>
<product_no>VLS1 1200</product_no>
<sort_feild>32D1</sort_feild>
<suffix>20140</suffix>
<person_code>60208</person_code>
<process_date>0607WIRE</process_date>
<maintenance_date>SPEC DA</maintenance_date>
</header>
现在我的问题是是否有一个 C# 类或 api 可以根据长度和偏移量规则将我的文本文件转换为 xml 或 json 文件?
使用 LINQ to XML 执行所需的操作非常容易:
// Read txt file into an array of strings.
string[] source = File.ReadAllLines(@"C:'mypath'text.txt");
// Construct xml from above source file. Use helper method to split string.
XElement cust = new XElement("Root",
from str in source
let fields = SplitLine(str)
select new XElement("header",
new XElement("header_id", fields[0]),
new XElement("product_no", fields[1]),
new XElement("sort_field", fields[2]),
new XElement("suffix", fields[3]),
new XElement("person_code", fields[4]),
new XElement("process_date", fields[5]),
new XElement("maintenance_date", fields[6])
)
);
您可以使用带有偏移量 - 1、长度作为索引substring
函数轻松拆分 txt 文件的每一行:
public static string[] SplitLine(string str)
{
string[] s = new string[7] {
str.Substring(0, 3),
str.Substring(3, 15),
str.Substring(18, 9),
str.Substring(27, 9),
str.Substring(32, 5),
str.Substring(37, 8),
str.Substring(45, 8)
};
return s;
}
使用
FileHelpers 处理文件,使用 LINQ to XML 将结果转换为 XML。