我有以下xml文件来概述布局,
<weather>
<current_conditions>
<condition data="Mostly Cloudy" />
<temp_f data="48" />
<temp_c data="9" />
<humidity data="Humidity: 71%" />
<icon data="/ig/images/weather/mostly_cloudy.gif" />
<wind_condition data="Wind: W at 17 mph" />
</current_conditions>
<forecast_conditions>
<day_of_week data="Sun" />
<low data="34" />
<high data="48" />
<icon data="/ig/images/weather/mostly_sunny.gif" />
<condition data="Partly Sunny" />
</forecast_conditions>
<forecast_conditions>
<day_of_week data="Mon" />
<low data="32" />
<high data="45" />
<icon data="/ig/images/weather/sunny.gif" />
<condition data="Clear" />
</forecast_conditions>
我正在学习c#并希望在一周中的每一天使用一行导出到csv, 如果一天的信息不可用,我需要在csv行中不显示任何数据。 我很欣赏我学习的最简单的解决方案:)
答案 0 :(得分:1)
我假设您要忽略当前条件节点,因为对于我来说csv文件的列并不都匹配相同的数据没有多大意义。要将所有预测信息转换为csv,您可以使用:
XDocument doc = XDocument.Parse(...);
StringBuilder sb = new StringBuilder(1000);
foreach (XElement node in doc.Descendants("forecast_conditions"))
{
foreach(XElement innerNode in node.Elements())
{
sb.AppendFormat("{0},", innerNode.Attribute("data").Value);
}
//Remove trailing comma
sb.Remove(sb.Length - 1, 1);
sb.AppendLine();
}
File.WriteAllText(@"c:\temp.csv", sb.ToString());