我需要使用linq到Xml访问地址标记下的值。
<p1:Person>
<p2:ID>1</p2:ID>
<p2:Name>Qwerty</p2:Name>
<p2:Address>
<p2:street>1111 abc</p2:street>
<p2:road # >9</p2:road #>
</p2:Address>
<p1:Person>
我写了一个像这样的查询
ArrayList nodes = new ArrayList();
List<XElement> personNode = xml.Elements().Where(e => e.Name.LocalName == "Person").ToList();
foreach (XElement x in personNode )
{
IEnumerable<XElement> addressNode = x.Elements().Where(e => e.Name.LocalName == "Address");
foreach (XElement x in addressNode)
{
IEnumerable<XElement> streetNode= x.Elements().Where(e => e.Name.LocalName == "street");
foreach (XElement x1 in streetNode)
{
Nodes.Add(x1.Value);
}
}
}
这应该给我节点Arraylist中的街道值..但是Error接近“addressNode”..没有值进入addressNode变量。
请在此查询上输入一些输入。那将是很有帮助的。
此致 NewbietoLinq
答案 0 :(得分:1)
看起来你正试图在嵌套的foreach循环中重用x
变量。这有用吗?
ArrayList nodes = new ArrayList();
List<XElement> personNode = xml.Elements().Where(e => e.Name.LocalName == "Person").ToList();
foreach (XElement p in personNode )
{
IEnumerable<XElement> addressNode = p.Elements().Where(e => e.Name.LocalName == "Address");
foreach (XElement a in addressNode)
{
IEnumerable<XElement> streetNode= a.Elements().Where(e => e.Name.LocalName == "street");
foreach (XElement s in streetNode)
{
Nodes.Add(s.Value);
}
}
}