我有来自第三方的XML,看起来像这样:
<Breakfasts>
<Name>Cornflakes</Name>
<Description>Just add milk</Name>
<Name>Toast</Name>
<Name>Muesli</Name>
<Description>Healthy option</Description>
</Breakfasts>
我们必须通过XML中节点的位置来推断Name和Description之间的关系。所以玉米片是“刚添加牛奶”,Toast没有描述,Muesli是“健康选择”等等。
我有一个名为Breakfast的课程,如下所示:
public class Breakfast
{
public string Name { get; set; }
public string Description { get; set; }
}
如何将这个XML解析(使用XDocument,也许?)到一个早餐列表中?
答案 0 :(得分:1)
Ick - 多么可怕的格式。我可能会做类似的事情:
var list = doc.Descendants("Name").Select(MakeBreakfast).ToList();
...
static Breakfast MakeBreakfast(XElement nameElement)
{
string name = (string) nameElement;
var nextElement = nameElement.ElementsAfterSelf().FirstOrDefault();
string description =
nextElement != null && nextElement.Name.LocalName == "Description"
? (string) nextElement
: null;
return new Breakfast { Name = name, Description = description };
}
答案 1 :(得分:-1)
这就是我要做的事情:
var breakfasts =
doc.Root.Elements("Name").Select(x => new Breakfast()
{
Name = x.Value,
Description =
x.NextNode as XElement != null
? (x.NextNode as XElement).Name == "Description"
? (x.NextNode as XElement).Value
: ""
: "",
}).ToList();
这给了我: