1

我有一个与此类似的场景:

public class TestLinq2Xml
{
  private XElement GenerateSomeXml()
  {
     return XElement.Parse(@"<MyObject>
                                <Properties>
                                   <Name>My object 1</Name>
                                   <Position>0; 0; 0</Position>
                                </Properties>
                             </MyObject>");
  }

public void ExploreXmlNode()
{
  var xmlTree = this.GenerateSomeXml();

  var name = xmlTree.Element("MyObject").Element("Properties").Element("Name").Value;

  Console.WriteLine(name);
}

}

好的,这非常简化。....但它仍然无法正常工作。关于我在这里做错了什么的任何想法?

编辑:

哦,差点忘了。问题是xmlTree.Element("MyObject")返回一个空的 linq 序列。即使我清楚地有一个名为“MyObject”的节点。

4

2 回答 2

3

XElement.Parse 返回一个 XElement,它是<MyObject>节点。尝试:-

var name = xmlTree.Element("Properties").Element("Name").Value;

于 2009-01-19T20:52:35.300 回答
2

除了上一张海报的建议之外,您还可以从 GenerateSomeXml() 函数返回一个 XDocument,以便您的 linq 工作。

        private static XDocument GenerateSomeXml()
    {
        return XDocument.Parse(@"<MyObject>
                            <Properties>
                               <Name>My object 1</Name>
                               <Position>0; 0; 0</Position>
                            </Properties>
                         </MyObject>");
    }
于 2009-01-19T21:11:20.537 回答