LINQ to XML 使用筆記 - 轉換 XML 資料

2018-02-05 10:30:54来源:http://poychang.github.io/linq-to-xml-transfom-xml/作者:Poy Chang人点击

分享

接续上篇的基本操作,这篇主要使用 LINQ to XML 来转换 XML 资料。


目录:


基本操作
建立 XML 档案
查询 XML 资料
修改 XML 资料
转换 XML 资料
验证 XML 资料
取得 CDATA 资料


系列文完整範例程式码请参考poychang/Demo-Linq-To-Xml


转换 XML 资料
转换成 CSV


如何将 XML 资料转换成 CSV 格式,这个转换其实就是在玩字串组合的游戏,将 XML 的资料内容读取出来后,组成我们想要的格式,下面的範例将转换成,
当作分隔符号的 CSV 格式:


const string delimiter = ",";
xmlDocument.Descendants("Student")
.ToList().ForEach(element =>
{
Console.WriteLine(element);
stringBuilder.Append(
$@"{element.Attribute("Id")?.Value}{delimiter}" +
$@"{element.Element("Name")?.Value}{delimiter}" +
$@"{ element.Element("Gender")?.Value}{delimiter}" +
$@"{ element.Element("TotalMarks")?.Value}{delimiter}{"/r/n"}"
);
});


请参考05-TransformXmlToCsv
专案的Program.cs


转换成 HTML


如果要将 XML 资料转换成同样是标记式语言的 HTML 格式,玩法就可以改变一下,因为 HTML 本身符合 XML 格式,因此我们可以藉由 LINQ to XML建立 XML 文件的方法,来协助我们进行转换,请见以下範例:


var result = new XDocument(
new XElement("table", new XAttribute("border", 1),
new XElement("thead",
new XElement("tr",
new XElement("th", "Name"),
new XElement("th", "Gender"),
new XElement("th", "TotalMarks"))),
new XElement("tbody",
from student in xmlDocument.Descendants("Student")
select new XElement("tr",
new XElement("td", student.Element("Name")?.Value),
new XElement("td", student.Element("Gender")?.Value),
new XElement("td", student.Element("TotalMarks")?.Value))))
);


简单来看,就是把table
、thead
、tbody
当作 XML 的元素名称,并在读取完 XML 资料后,依据想要呈现的资料格式将值给塞进这些 HTML 元素中。



请参考06-TransformXmlToHtml
专案的Program.cs


参考资料:


最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台