using System; using System.Linq; using System.Collections; using System.Collections.Generic; using System.Xml; using System.Xml.Schema; using System.Xml.Linq; using System.IO; public class MainClass { public static void Main() { string schema = @"<?xml version='1.0' encoding='utf-8'?> <xs:schema attributeFormDefault='unqualified' elementFormDefault='qualified' xmlns:xs='http://www.w3.org/2001/XMLSchema'> <xs:element name='Books'> <xs:complexType> <xs:sequence> <xs:element maxOccurs='unbounded' name='Book'> <xs:complexType> <xs:sequence> <xs:element name='FirstName' type='xs:string' /> <xs:element minOccurs='0' name='MiddleInitial' type='xs:string' /> <xs:element name='LastName' type='xs:string' /> </xs:sequence> <xs:attribute name='type' type='xs:string' use='required' /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>"; XmlSchemaSet schemaSet = new XmlSchemaSet(); schemaSet.Add("", XmlReader.Create(new StringReader(schema))); } }
XML LINQ
Using ReplaceAll to Change an Element's Subtree
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 XElement("Books", firstParticipant = new XElement("Book", new XAttribute("type", "Author"), new XElement("FirstName", "J"), new XElement("LastName", "R")))); Console.WriteLine(xDocument); firstParticipant.ReplaceAll( new XElement("FirstName", "C"), new XElement("LastName", "D")); Console.WriteLine(xDocument); } }
Removing a Node's Content with RemoveAll
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", "J"), new XElement("LastName", "R")), new XElement("Book", new XAttribute("type", "Author"), new XElement("FirstName", "E"), new XElement("LastName", "B")))); Console.WriteLine(xDocument); xDocument.Element("Books").RemoveAll(); Console.WriteLine(xDocument); } }
Deleting a Sequence of Nodes with Remove
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", "J"), new XElement("LastName", "R")), new XElement("Book", new XAttribute("type", "Author"), new XElement("FirstName", "E"), new XElement("LastName", "B")))); xDocument.Descendants().Where(e => e.Name == "FirstName").Remove(); Console.WriteLine(xDocument); } }
Deleting a Specific Node with Remove
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 XElement("Books", firstParticipant = 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")))); Console.WriteLine(xDocument); firstParticipant.Remove(); Console.WriteLine(xDocument); } }
use Linq to query an XML document
using System; using System.Linq; using System.Xml; using System.Xml.Linq; static class HelloLinqToXml { static void Main() { var books = new[] { new {Title="A", Publisher="M", Year=2005 }, new {Title="W", Publisher="M", Year=2006 }, new {Title="R", Publisher="M", Year=2006 } }; XElement xml = new XElement("books", from book in books where book.Year == 2006 select new XElement("book", new XAttribute("title", book.Title), new XElement("publisher", book.Publisher) ) ); Console.WriteLine(xml); } }
Query string array by its element length
using System;
using System.Linq;
class HelloWorld {
static void Main() {
string[] words = { “hello”, “wonderful”, “linq”, “beautiful”, “world” };
var shortWords = from word in words
where word.Length <= 5
select word;
foreach (var word in shortWords)
Console.WriteLine(word);
}
}
[/csharp]