将Xml转换为txt

时间:2011-05-18 15:08:27

标签: c# xml regex text-files

我目前正在处理一个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来计数,这就是我如何显示驱动程序名称:“而不是数字。

关于你如何做到这一点的任何指示将是一个伟大的洞察力。

3 个答案:

答案 0 :(得分:1)

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

请参阅:

替代方法是定义一个xslt,将xml重新格式化为您选择的布局。通常,它是从xml数据生成html文档的首选方法,但可用于转换为普通文本报告。您可以在

上阅读更多相关信息

答案 1 :(得分:1)

您可以使用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方法,但此方案应该有效。

答案 2 :(得分:0)

XML的设计使得某些功能是必需的并且可能依赖于它们,而其他功能则是文档作者的选择。你的计划似乎让这些功能完全倒退!标准不保证出现哪一行。整个合法的XML文件可能占用一行。

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

没有理由自己解析它。

请记住,如果您的解决方案包含RegEx,那么您已经输了。

(我开玩笑说最后一部分。排序。)