我正在通过bundle update
解析XML,我该如何检索所有语言,即XDocument
或<en>
或<de>
及其子元素?
<CodeCountry>
答案 0 :(得分:0)
由于您的xml文档格式不正确,您应该首先添加根元素。 你可以这样做。
var content = File.ReadAllText(@"<path to your xml>");
var test = XDocument.Parse("<Language>" + content + "</Language>");
然后,当您拥有“动态顶级节点”时,您可能会尝试使用他们的孩子(似乎不是动态的),假设所有节点至少都有一个“descriptif”子节点。 (如果它不是“descriptif”,它可能是“prox”或“libelle”)**。
//this will give you all parents, <en>, <de> etc. nodes
var parents = test.Descendants("descriptif").Select(m => m.Parent);
然后你可以选择语言和孩子。 我使用匿名类型,你当然可以投射到自定义类。
var allNodes = parents.Select(m => new
{
name = m.Name.LocalName,
Descriptif = m.Element("descriptif") == null ? string.Empty : m.Element("descriptif").Value,
Prox = m.Element("prox") == null ? string.Empty : m.Element("prox").Value ,
Label = m.Element("libelle") == null ? string.Empty : m.Element("libelle").Value
});
这当然不是大文件的高性能代码,但是......这是另一个问题。
** 最坏的情况,你可以做
var parents = test.Descendants("descriptif").Select(m => m.Parent)
.Union(test.Descendants("prox").Select(m => m.Parent))
.Union(test.Descendants("libelle").Select(m => m.Parent));