[英]Querying a XML FIle and creating a text file
我有一个XML文件:TableList.xml
<TableList>
<Table>
<TableName>TableA</TableName>
<Columns>ColumnA1,ColumnA2,ColumnA3,ColumnA4</Columns>
</Table>
<Table>
<TableName>TableB</TableName>
<Columns>ColumnB1,ColumnB2,ColumnB3,ColumnB4</Columns>
</Table>
</TableList>
我想使用Linq-to-XML查询此文件,对于每个值,我想导出以下格式
The table - TableA - has columns - ColumnA1,ColumnA2,ColumnA3,ColumnA4.
The table - TableB - has columns - ColumnB1,ColumnB2,ColumnB3,ColumnB4.
最后将其创建为单个文本文件TableDoc.txt
。
如何使用Linq-to-XML简洁地成为圆顶?
如何使用Linq-to-XML简洁地成为圆顶?
我将其视为简洁的挑战...
File.WriteAllLines("TableDoc.txt", XDocument.Load("TableList.xml")
.Descendants("Table")
.Select(t => string.Format("The table - {0} - has columns {1}.",
t.Element("TableName").Value,
t.Element("Columns").Value)));
(显然,除去真正的简洁所有不必要的空格。)
当然,这仍然给您带来挑战,弄清楚它的工作原理/原因-并可能以一种更具可读性的方式对其进行重构。
using (TextWriter writer = File.CreateText("TableDoc.txt"))
{
XDocument doc=XDocument.Load("yourXML");//load document
foreach(var elm in doc.Descendants("Table"))//takes all table elements
{
string s="The table-"+elm.Element("TableName").Value+"- has coloumns -"+elm.Element("Columns").Value;
writer.WriteLine(s);
}
}
我可以建议(主观地?)可读性更高的查询表达式版本:
var columnsPerTable = from table in XElement.Load("TableList.xml").Elements("Table")
let name = table.Element("TableName")
let columns = table.Element("Columns")
select string.Format("The table - {0} - has columns - {1}.",
name.Value, columns.Value);
File.WriteAllLines("TableDoc.txt", columnsPerTable);
当然,不需要使用XDocument
。 XElement
可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.