Linq to XML(我无法访问标签之间的值)

时间:2009-11-06 16:12:54

标签: linq-to-xml

我需要使用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

1 个答案:

答案 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);
        }
    }
}