为什么C#XDocument.subjections()不起作用?

为什么C#XDocument.subjections()不起作用?,c#,asp.net,xml,C#,Asp.net,Xml,我的XML的一个示例: <data> <Balance> <LocationName>Locatie 1</LocationName> <Latitude>39.74</Latitude> <Longitude>-104.99</Longitude> <RTI> <Container>12&

我的XML的一个示例:

<data>
    <Balance>
      <LocationName>Locatie 1</LocationName>
      <Latitude>39.74</Latitude>
      <Longitude>-104.99</Longitude> 
         <RTI>
            <Container>12</Container>
            <Pallet>54</Pallet>
        </RTI>
    </Balance>
    // Lots more Balance nodes
</data>

根据调试器,值“b”包含整个XML文档,而不是单个平衡节点。我做错了什么?我试图读取一个平衡节点的所有后代,其中LocationName节点的值等于一个字符串参数。有人能帮忙吗?

如果您想读取平衡节点的后代,请使用下面的语句

var余额=单据子体(“余额”)


如果您想读取平衡节点的后代,它将用“Balances”加载所有元素,然后使用下面的语句

var余额=单据子体(“余额”)


它将用“Balances”加载所有元素。

根据变量名和用法判断,您没有正确使用


这意味着“给我所有元素名为
的文档元素的后代”Balance“

根据变量名和用法判断,您使用得不正确


这意味着“将元素名为
的文档元素的所有子元素都给我”Balance“

您的文档中没有任何
数据
元素。它只有一个
数据
元素,但这不一样。。。即使您请求
数据
,也没有
位置名称
元素。。。它有一个
平衡
元素。也许您想要
var balances=doc.substands(“Balance”)
?您的文档中没有任何
数据
元素。它只有一个
数据
元素,但这不一样。。。即使您请求
数据
,也没有
位置名称
元素。。。它有一个
平衡
元素。也许您想要
var balances=doc.substands(“Balance”)
?谢谢,我误读了这个函数的文档。我想你必须输入你想要所有后代的节点的名称。取而代之的是,你必须输入你想要的所有子代的名字。同时使用XElement,这比XDocument快得多。示例代码:XElement doc=XElement.Load(HttpContext.Current.Request.PhysicalApplicationPath+“/Content/saldotracking.xml”);var余额=单据子体(“余额”);谢谢,我误读了这个函数的文档。我想你必须输入你想要所有后代的节点的名称。取而代之的是,你必须输入你想要的所有子代的名字。同时使用XElement,这比XDocument快得多。示例代码:XElement doc=XElement.Load(HttpContext.Current.Request.PhysicalApplicationPath+“/Content/saldotracking.xml”);var余额=单据子体(“余额”);
XDocument doc = XDocument.Load(HttpContext.Current.Request.PhysicalApplicationPath + "/Content/saldotracking.xml");
        var balances = doc.Descendants("Data");

        foreach (var b in balances)
        {
            if (b.Element("LocationName").Value == id)
            {
                this.LocationName = b.Element("LocationName").Value;
                this.Longitude = Convert.ToDouble(b.Element("Longitude").Value);
                this.Latitude = Convert.ToDouble(b.Element("Latitude").Value);
                this.pallets = Convert.ToInt16(b.Element("RTI").Element("Pallet").Value);
                this.containers = Convert.ToInt16(b.Element("RTI").Element("Container").Value);
            }
        }
public IEnumerable<XElement> Descendants(
    XName name
)
    var balances = doc.Descendants("Balance");