Calling the First Descendants Prototype

   
 

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(
         new XElement("Books",
           new XElement("Book",
            new XAttribute("type", "Author"),
           new XComment("This is a new author."),
            new XElement("FirstName", "A"),
           new XElement("LastName", "B")),
           new XElement("Book",
            new XAttribute("type", "Author"),
           new XElement("FirstName", "C"),
           new XElement("LastName", "D"))));
        IEnumerable<XElement> elements = xDocument.Element("Books").Elements("Book");
        foreach (XElement element in elements) {
            Console.WriteLine("Source element: {0} : value = {1}",element.Name, element.Value);
        }
        foreach (XElement element in elements.Descendants()) {
            Console.WriteLine("Descendant element: {0}", element);
        }
    }
}

    


Traversing Down from an XElement Object via the Descendants Method

   
 

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XElement firstParticipant;
        XDocument xDocument = new XDocument(
      new XDeclaration("1.0", "UTF-8", "yes"),
      new XDocumentType("Books", null, "Books.dtd", null),
      new XProcessingInstruction("Book", "out-of-print"),
      new XElement("Books", firstParticipant =
      new XElement("Book",
      new XComment("a new author."),
      new XProcessingInstruction("AuthorHandler", "new"),
      new XAttribute("type", "Author"),
        new XElement("FirstName",
       new XText("A"),
       new XElement("NickName", "J")),
        new XElement("LastName", "R")),
         new XElement("Book",
        new XAttribute("type", "Author"),
        new XElement("FirstName", "E"),
        new XElement("LastName", "B"))));

        foreach (XElement element in firstParticipant.Descendants()) {
            Console.WriteLine(element.Name);
        }

    }
}

    


Get parent element

   
 
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.Reflection;
using System.Xml.Linq;

class Program {
    static void Main(string[] args) {
        XElement xml = XElement.Load("Employee.xml");
        XElement firstName = xml.Descendants("firstname").First();
        Console.WriteLine(firstName.Parent);
    }
}

    


Has elements and has attributes

   
 
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.Reflection;
using System.Xml.Linq;

class Program {
    static void Main(string[] args) {
        XElement xml = XElement.Load("Employee.xml");
        XElement firstName = xml.Descendants("firstname").First();
        Console.WriteLine("FirstName tag has attributes: {0}", firstName.HasAttributes);
        Console.WriteLine("FirstName tag has child elements: {0}", firstName.HasElements);
        Console.WriteLine("FirstName tag&#039;s parent has attributes: {0}", firstName.Parent.HasAttributes);
        Console.WriteLine("FirstName tag&#039;s parent has child elements: {0}", firstName.Parent.HasElements);
    }
}

    


Calling the Second DescendantsAndSelf Prototype

   
 

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(
         new XElement("Books",
           new XElement("Book",
            new XAttribute("type", "Author"),
           new XComment("This is a new author."),
            new XElement("FirstName", "A"),
           new XElement("LastName", "B")),
           new XElement("Book",
            new XAttribute("type", "Author"),
           new XElement("FirstName", "C"),
           new XElement("LastName", "D"))));

        IEnumerable<XElement> elements = xDocument.Element("Books").Elements("Book");
        foreach (XElement element in elements) {
            Console.WriteLine("Source element: {0} : value = {1}", element.Name, element.Value);
        }
        foreach (XElement element in elements.DescendantsAndSelf("LastName")) {
            Console.WriteLine("Descendant element: {0}", element);
        }
    }
}

    


Calling the First DescendantsAndSelf Prototype

   
 

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(
         new XElement("Books",
           new XElement("Book",
            new XAttribute("type", "Author"),
           new XComment("This is a new author."),
            new XElement("FirstName", "A"),
           new XElement("LastName", "B")),
           new XElement("Book",
            new XAttribute("type", "Author"),
           new XElement("FirstName", "C"),
           new XElement("LastName", "D"))));

        IEnumerable<XElement> elements = xDocument.Element("Books").Elements("Book");
        foreach (XElement element in elements) {
            Console.WriteLine("Source element: {0} : value = {1}", element.Name, element.Value);
        }
        foreach (XElement element in elements.DescendantsAndSelf()) {
            Console.WriteLine("Descendant element: {0}", element);
        }
    }
}

    


Calling the Only DescendantNodesAndSelf Prototype

   
 

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {
        XDocument xDocument = new XDocument(
         new XElement("Books",
           new XElement("Book",
            new XAttribute("type", "Author"),
           new XComment("This is a new author."),
            new XElement("FirstName", "A"),
           new XElement("LastName", "B")),
           new XElement("Book",
            new XAttribute("type", "Author"),
           new XElement("FirstName", "C"),
           new XElement("LastName", "D"))));

        IEnumerable<XElement> elements = xDocument.Element("Books").Elements("Book");
        foreach (XElement element in elements) {
            Console.WriteLine("Source element: {0} : value = {1}", element.Name, element.Value);
        }
        foreach (XNode node in elements.DescendantNodesAndSelf()) {
            Console.WriteLine("Descendant node: {0}", node);
        }

    }
}