我的xml文档如下(但更大,与出生日期信息无关)。它是由一种方法生成的,我想从中访问信息。
我想查找像John或Hannah这样的“名字”并从下一行获取DOB,也许可以将它们放入Dictionary<string,string>
以供日后查找。
文档始终采用此形式,名称是唯一的。我只需要第一部分名称=“DOBs”。
<info>
<section name="DOBs">
<table>
<headers>
<cell value="Name" />
<cell value="DOB" />
</headers>
<row>
<cell value="John" />
<cell value="121245" />
</row>
<row>
<cell value="Hannah" />
<cell value="050595" />
</row>
</table>
</section>
<section name="notDOBs">
<table>
<headers>
<cell value="Name" />
<cell value="other info" />
</headers>
<row>
<cell value="Hannah" />
<cell value="blue" />
</row>
....
</table>
</section>
</info>
我尝试了什么? - 说实话,不是很多,因为我对xml一般感到困惑。我查看了一些SO条目:Xml Reader,This one和How to use XMLreader to read this xml。我还看了csharp-examples.net看起来不错,但我一直收到“不会导致节点设置”的错误。
当我发现这个时,我很兴奋:get xml attribut values但没有快乐,似乎没有找到它们。
var myXml = XElement.Load(_myPath).Elements();
var myArray = myXml.Elements("cell").Attributes("value").Select(n => n.Value);
我知道我还有很多工作要做,但有时你只需咬紧牙关问一下......有人可以帮忙吗?
答案 0 :(得分:1)
var list = XDocument.Load("C:\\test.xml")
.Descendants("section")
.Where(e => e.Attribute("name").Value.Equals("DOBs"))
.Descendants("row")
.Descendants("cell")
.Attributes("value").ToList();
var dic = Enumerable.Range(0, list.Count/2)
.ToDictionary(i => list[2*i], i => list[2*i + 1]);
答案 1 :(得分:0)
Sort XML nodes alphabetically on attribute name
检查以上示例
导航器中的尝试使用
.MoveFirstChild() method
.MoveNext() method
.MoveToFirstAttribute() method
.MoveToNextAttribute() method
.Name property
.Value property
不要忘记检查当前的是否为空