Calling the Only DescendantNodes 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.DescendantNodes()) {
            Console.WriteLine("Descendant node: {0}", node);
        }
    }
}

    


Accessing the First Child Element with a Specified Name

   
 

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("This is a new author."),
        new XProcessingInstruction("AuthorHandler", "new"),
        new XAttribute("type", "Author"),
        new XElement("FirstName", "J"),
        new XElement("LastName", "R")),
        new XElement("Book",
        new XAttribute("type", "Author"),
        new XElement("FirstName", "E"),
        new XElement("LastName", "B"))));
        Console.WriteLine(firstParticipant.Element("FirstName"));
    }
}

    


FirstNode and LastNode give you direct access to the first or last child node

   
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
public class MainClass {
    public static void Main() {

        var bench = new XElement("bench",
                      new XElement("t",
                        new XElement("B", "H"),
                        new XElement("A", "R")
                      ),
                      new XElement("t",
                        new XElement("B", "S"),
                        new XElement("A", "N")
                      ),
                      new XComment("This is the comment")
                    );
        foreach (XNode node in bench.Nodes())
            Console.WriteLine(node.ToString(SaveOptions.DisableFormatting) + ".");
    }
}

    


Accessing Named Child Elements Using the Elements 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", "J"),
       new XElement("LastName", "R")),
       new XElement("Book",
       new XAttribute("type", "Author"),
       new XElement("FirstName", "E"),
       new XElement("LastName", "B"))));
        foreach (XNode node in firstParticipant.Elements("FirstName")) {
            Console.WriteLine(node);
        }
    }
}

    


Accessing an Element's Child Elements Using the Elements 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("This is a new author."),
         new XProcessingInstruction("AuthorHandler", "new"),
         new XAttribute("type", "Author"),
         new XElement("FirstName", "J"),
         new XElement("LastName", "R")),
         new XElement("Book",
         new XAttribute("type", "Author"),
         new XElement("FirstName", "E"),
         new XElement("LastName", "B"))));

        foreach (XNode node in firstParticipant.Elements()) {
            Console.WriteLine(node);
        }
    }
}

    


Calling the Second Attributes 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 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 (XAttribute attribute in elements.Attributes("type")) {
            Console.WriteLine("Attribute: {0} : value = {1}",
             attribute.Name, attribute.Value);
        }
    }
}

    


Calling the First Attributes 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 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 (XAttribute attribute in elements.Attributes()) {
            Console.WriteLine("Attribute: {0} : value = {1}",
             attribute.Name, attribute.Value);
        }

    }
}