我本月开始学习C#,我正在创建一个程序来解析XML文件并获取一些数据。 .xml文件是:
<Info>
<Symbols>
<Symbol>
<Name>Name</Name>
<Type>INT</Type>
</Symbol>
<Symbol>
<Name>Name</Name>
<Type>INT</Type>
<Properties>
<Property>
<Name>TAG</Name>
</Property>
</Properties>
</Symbol>
</Symbols>
</Info>
下面的代码,从“符号”中获取元素“名称”和“类型”的值。但我需要检查每个“符号”中是否存在元素“属性”,因为正如您所看到的,会有一些(如第一个“符号”)没有“属性”元素。 如果它存在,我将从中获取值,在这种情况下:“TAG”。 是否有一种简单的方法可以让foreach尝试只在它存在的情况下才能获得它?!
var symbols = from symbol in RepDoc.Element("Info").Element("Symbols").Descendants("Symbol")
select new
{
VarName = symbol.Element("Name").Value,
VarType = symbol.Element("Type").Value,
};
foreach (var symbol in symbols)
{
Console.WriteLine("" symbol.VarName + "\t" + symbol.VarType);
}
提前谢谢^^
答案 0 :(得分:0)
var res = XDocument.Load(fname)
.Descendants("Symbol")
.Select(x => new
{
Name = (string)x.Element("Name"),
Type = (string)x.Element("Type"),
Props = x.Descendants("Property")
.Select(p => (string)p.Element("Name"))
.ToList()
})
.ToList();
Props
将包含零个或多个元素,具体取决于Properties
标记。