如何提取XML文件中每个标记的出现

我有以下XML文件:

  ...    THIS IS A TEST NARRATIVE   ...   THIS IS A TEST STATEMENT   ...  ...    THIS IS A TEST NARRATIVE2   ...   THIS IS A TEST STATEMENT2   ...  ...    THIS IS A TEST NARRATIVE3   ...   THIS IS A TEST STATEMENT3   ...  ...   

我在看LINQ to XML,但我不确定如何实现它。 我想保存叙述,并为每个叙述,将语句保存到一个数组中以供以后使用。

例:

 THIS IS A TEST NARRATIVE THIS IS A TEST STATEMENT THIS IS A TEST NARRATIVE2 THIS IS A TEST STATEMENT2 THIS IS A TEST NARRATIVE3 THIS IS A TEST STATEMENT3 

我该如何实现?

我正在使用XDocument加载文件:

 XDocument X = XDocument.Load("myfile.xml"); var main = x.Element("queryResponse").Element("querySubjectResponse").Element("report").Element("informationReported").Element("aar"); 

我试图从这个链接的答案: Linq到XML

这应该对你有用,假设每个报告都有一个叙述和一个可选的声明:

 XElement root = XElement.Load(file); List list = root.Descendants("report") .SelectMany(report => { List sub = new List(); sub.Add(report.Descendants("narrative").First().Value); string statement = (string)report.Descendants("statement") .FirstOrDefault(s => s.Elements().Any() == false); sub.Add(statement ?? "NULL"); return sub; }) .ToList(); 

如果您想将叙述和陈述放在单独的列表中,请执行以下操作:

 var list = root.Descendants("report") .Select(report => new { Narrative = report.Descendants("narrative").First().Value, Statement = ((string)report.Descendants("statement") .FirstOrDefault(s => s.Elements().Any() == false)) ?? "NULL" }) .ToList();