我有类似的情况:
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”的节点。
答案 0 :(得分:3)
XElement.Parse返回一个XElement,它是<MyObject>
节点。尝试: -
var name = xmlTree.Element(“Properties”)。元素(“名称”)。值;
答案 1 :(得分: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>");
}