使用XElement中的XPath读取包含文本和节点的子节点? LinQ中

时间:2011-10-30 21:53:49

标签: c# xml linq linq-to-xml

使用旧方式通过XmlDocument,

string xmlstring = "<root><profile><Name>John</Name><Age>23</Age></profile></root>";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlstring);
string childNodes = xmlDoc.SelectSingleNode("root/Profile").InnerXml;

// output of childNodes would be => "<Name>John</Name><Age>23</Age>";

当你有XElement变量时,在LinQ中执行上述执行的等价物是什么。我在XElement中看到XPathSelectElement方法,但它不返回子节点+子节点文本。任何想法?

1 个答案:

答案 0 :(得分:3)

我根本不会使用XPath。我会用:

XDocument doc = XDocument.Parse(xmlString);
var nodes = doc.Root
               .Elements("profile")
               .DescendantsAndSelf();

给出profile个节点及其所有后代。目前还不清楚你要对结果做些什么,但如果你能提供更多细节,我应该能够提出适当的代码。