将 Xml 转换为 txt

本文关键字:txt 转换 Xml | 更新日期: 2023-09-27 17:56:43

我目前正在使用一个XML文件,该文件以XML格式保存种族信息

 <Row xmlns="Practice2a">
<RecordType>Qualifying Classification</RecordType> 
<_x0030_02150Position>3</_x0030_02150Position> 
<Class>250</Class> 
<_x0030_02150MachineNo>11</_x0030_02150MachineNo> 
<RiderName>Kevin James</RiderName> 
<Machine>Honda</Machine> 
<_x0030_02150ToDBehind>29.680</_x0030_02150ToDBehind> 
<_x0030_02150BestLapSpeed>97.1415157615475</_x0030_02150BestLapSpeed> 
<_x0030_02150ToDBestLapTime>5:32.274</_x0030_02150ToDBestLapTime> 
<_x0030_02150BestOnLap>7</_x0030_02150BestOnLap> 
</Row>

我想创建一个只包含一些信息的普通 txt 文件,我只想以表格格式实物关闭,例如

pos     Name      racetime    and BestLaptime

我试图从文件中删除标签并创建一个 txt 文件,所以现在我得到我创建了一个行计数,可能用作提取正确字段的分隔符。

139 Qualifying Classification
140 3
141 250
142 11
Driver Name: Machine Type: Kevin James
145 Honda
146 29.680
147 97.1415157615475
148 5:32.274

我的代码变得失控,我想知道是否有更好的方法来实现这一目标,而不是每次都添加 14 计数,这就是我显示驱动程序名称:"而不是数字的方式。

任何关于您将如何做到这一点的指示都将是一个很好的见解。

将 Xml 转换为 txt

一个快速的解决方案是在 XmlDocument 中读取 xml(甚至更简单的数据集),并在 c# 代码中生成文本文件。

看:

  • 演练:将 XML 数据读入数据集
  • 使用 XmlDocument 读取 XML 属性

另一种方法是定义一个 xslt 以将 xml 重新格式化为您选择的布局。通常,它是从xml数据生成html文档的首选方法,尽管可用于转换为普通文本报告。您可以在以下位置阅读更多相关信息

  • W3学校 - XSLT
  • XSLT 基础知识

您可以使用 LinqToXml 解析和格式化它:

using System.Xml.Linq
// [...]
// Load the XML, either from a string or from an url
var doc = XDocument.Parse(xmlString);
// or
var doc = XDocument.Load(new Uri(@"C:'myFile.xml"));
var result = String.Empty;
foreach (var el in doc.Descendants())
{
   // do something with it and format the data to your liking... e.g.
   result += FormatElement(el);
}
// or more compact
doc.Descendants().ToList().ForEach(el => result += FormatElement(el));
// [...]
private string FormatElement(XElement el)
{
   return String.Format("{0}: {1}", el.Name, el.Value);
}

当然,您需要使 FormatElement 方法适应您的需求,但此方案应该有效。

XML 的设计使得某些功能是必需的并且可能依赖于这些功能,而其他功能则由文档作者选择。您的方案似乎完全反向获取这些功能!标准不保证某物出现在哪一行上。整个合法 XML 文件可能占用一行。

XML的全部意义在于使用标准格式允许使用常用工具。.NET Framework 内置了(几个)XML 解析组件,这些组件可以读取此文件并准确为您提供所需的信息。然后,您可以将该信息输出为您喜欢的任何格式的文本。

没有理由自己解析它。

请记住,如果你的解决方案包括正则表达式,那么你已经输了。

(我开玩笑说最后一部分。有点。