2014年7月28日 星期一

[C#] 使用Linq取得XML所有nodes名稱/延伸應用

XDocument _doc = XDocument.Load("XXX.xml"); //Load Xml file

//The first parent node
IEnumerable<XElement> _elms =_doc.Elements("FirstNodeName");

foreach (var name in _doc.Root.DescendantNodes().OfType<XElement>().Select(x => x.Name))
{
Debug.WriteLine(name);
}

以上的程式碼會印出所有節點的名稱。
如果需要dinstinct,只要在Linq Extension加上Distinct …
_doc.Root.DescendantNodes().OfType<
XElement>().Select(x => x.Name).Distinct()


延伸應用:
選擇性印出某個Node底下的值(例如Node nameXXXX,底下某個子nodeYYYY的值):

foreach (var node in _doc.Root.DescendantNodes().OfType<XElement>())
{
if (node.Name.ToString().Equals("XXXX"))
{
Debug.WriteLine(node.Element("YYYY").Value);
   }

}

沒有留言:

張貼留言