如何提取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();