используя Систему;
using System.Collections.Generic;
использование System.Linq;
используя System.Text;
использование System.Xml.Linq;
// используя System.Xml;
пространство имен XMLtoLinqApp
{
Программа класса
{
static void Main (строка [] args)
{
//XmlDocument doc = new XmlDocument();
//XmlElement newBook=doc.CreateElement("BookParticipant");
//newBook.SetAttribute("Author");
//Using Functional Construction to Create an XML Schema
XElement xBookParticipant = new XElement("BookParticipant",
new XElement("FirstName", "Joe"),
new XElement("LastName", "Rattz"));
Console.WriteLine(xBookParticipant.ToString());
//Creates the Same XML Tree as Listing 6-1 but with Far Less Code
XElement xBookParticipants = new XElement("BookParticipants",
new XElement("BookParticipant",
new XAttribute("type", "Author"),
new XElement("FirstName", "Joe"),
new XElement("LastName", "Rattz")),
new XElement("BookParticipant",
new XAttribute("type", "Editor"),
new XElement("FirstName", "Ewan"),
new XElement("LastName", "Buckingham")));
Console.WriteLine(xBookParticipants.ToString());
//-- Disadvatages of XML document
//System.Xml.XmlElement xmlBookParticipant = new System.Xml.XmlElement("BookParticipant");
XElement xeBookParticipant = new XElement("BookParticipant");
XDocument xDocument = new XDocument(new XElement("BookParticipants",
new XElement("BookParticipant",
new XAttribute("type", "Author"),
new XElement("FirstName", "Joe"),
new XElement("LastName", "Rattz"))));
Console.WriteLine(xDocument.ToString());
//--Calling the ToString Method on an Element Produces the XML Tree
XElement name = new XElement("Name", "Joe");
Console.WriteLine(name.ToString());
//--Console.WriteLine Implicitly Calling the ToString Method on an Element to Produce an XML Tree
XElement name1 = new XElement("Person",
new XElement("FirstName", "Joe"),
new XElement("LastName", "Rattz"));
Console.WriteLine(name1);
//-- Casting an Element to Its Value’s Data Type Outputs the Value
Console.WriteLine(name);
Console.WriteLine((string)name);
//--Different Node Value Types Retrieved via Casting to the Node Value’s Type
XElement count = new XElement("Count", 12);
Console.WriteLine(count);
Console.WriteLine((int)count);
XElement smoker = new XElement("Smoker", false);
Console.WriteLine(smoker);
Console.WriteLine((bool)smoker);
XElement pi = new XElement("Pi", 3.1415926535);
Console.WriteLine(pi);
Console.WriteLine((double)pi);
DeferredQryProblem();
GenerateXMlFromLinqQry();
WithoutReaching();
Ancestors();
AncestorsAndSelf();
SortSample();
FindElementwithSpecificChild();
}
private static void DeferredQryProblem()
{
XDocument xDocument = new XDocument(
new XElement("BookParticipants",
new XElement("BookParticipant",
new XAttribute("type", "Author"),
new XElement("FirstName", "Joe"),
new XElement("LastName", "Rattz")),
new XElement("BookParticipant",
new XAttribute("type", "Editor"),
new XElement("FirstName", "Ewan"),
new XElement("LastName", "Buckingham"))));
IEnumerable<XElement> elements =
xDocument.Element("BookParticipants").Elements("BookParticipant");
foreach (XElement element in elements)
{
Console.WriteLine("Source element: {0} : value = {1}",
element.Name, element.Value);
}
foreach (XElement element in elements)
{
Console.WriteLine("Removing {0} = {1} ...", element.Name, element.Value);
element.Remove();
}
Console.WriteLine(xDocument);
foreach (XElement element in elements)
{
Console.WriteLine("Source element: {0} : value = {1}",
element.Name, element.Value);
}
foreach (XElement element in elements.ToArray())
{
Console.WriteLine("Removing {0} = {1} ...", element.Name, element.Value);
element.Remove();
}
Console.WriteLine(xDocument);
}
//-- Creating an Attribute and Adding It to Its Element
private static void CreatingAttribute()
{
XElement xBookParticipant = new XElement("BookParticipant", new XAttribute("type", "Author"));
Console.WriteLine(xBookParticipant);
}
//--Creating a Comment with Functional Construction
private static void CreatingComment()
{
XElement xBookParticipant = new XElement("BookParticipant",
new XComment("This person is retired."));
Console.WriteLine(xBookParticipant);
}
//--Creating a Declaration with Functional Construction
private static void CreateXmlDeclaration()
{
XDocument xDocument = new XDocument(new XDeclaration("1.0", "UTF-8", "yes"),
новый XElement («BookParticipant»));
ЕЫпе (XDocument);
}
private static void GenerateXMlFromLinqQry()
{
BookParticipant[] bookParticipants = new[] {new BookParticipant {FirstName = "Joe", LastName = "Rattz",
ParticipantType = ParticipantTypes.Author},
new BookParticipant {FirstName = "Ewan", LastName = "Buckingham",
ParticipantType = ParticipantTypes.Editor}
};
XElement xBookParticipants =
new XElement("BookParticipants",
bookParticipants.Select(p =>
new XElement("BookParticipant",
new XAttribute("type", p.ParticipantType),
new XElement("FirstName", p.FirstName),
new XElement("LastName", p.LastName))));
Console.WriteLine(xBookParticipants);
}
//-- Obtaining Elements Without Reaching
private static void WithoutReaching()
{
XDocument xDocument = new XDocument(new XElement("BookParticipants",
new XElement("BookParticipant",
new XAttribute("type", "Author"),
new XElement("FirstName", "Joe"),
new XElement("LastName", "Rattz")),
new XElement("BookParticipant",
new XAttribute("type", "Editor"),
new XElement("FirstName", "Ewan"),
new XElement("LastName", "Buckingham"))));
//-- Simple Descendants
IEnumerable<XElement> elements = xDocument.Descendants("BookParticipant");
foreach (XElement element in elements)
{
Console.WriteLine("Element: {0} : value = {1}",
element.Name, element.Value);
}
//-- Descendants with Where Clause
IEnumerable<XElement> elements1 = xDocument.Descendants("BookParticipant")
.Where(e => ((string)e.Element("FirstName")) == "Ewan");
foreach (XElement element1 in elements1)
{
Console.WriteLine("Element: {0} : value = {1}",
element1.Name, element1.Value);
}
}
//-- Ancestors Prototype
private static void Ancestors()
{
XDocument xDocument = new XDocument(new XElement("BookParticipants",
new XElement("BookParticipant",
new XAttribute("type", "Author"),
new XElement("FirstName", "Joe"),
new XElement("LastName", "Rattz")),
new XElement("BookParticipant",
new XAttribute("type", "Editor"),
new XElement("FirstName", "Ewan"),
new XElement("LastName", "Buckingham"))));
IEnumerable<XElement> elements = xDocument.Element("BookParticipants").Descendants("FirstName");
// First, I will display the source elements.
foreach (XElement element in elements)
{
Console.WriteLine("Source element: {0} : value = {1}",
element.Name, element.Value);
}
// Now, I will display the ancestor elements for each source element.
foreach (XElement element in elements.Ancestors())
{
Console.WriteLine("Ancestor element: {0}", element.Name);
}
// Now, I will display the ancestor elements for each source element.
foreach (XElement element in elements.Ancestors("BookParticipant"))
{
Console.WriteLine("Ancestor element: {0}", element.Name);
}
}
//-- AncestorsAndSelf
private static void AncestorsAndSelf()
{
XDocument xDocument = new XDocument(
new XElement("BookParticipants",
new XElement("BookParticipant",
new XAttribute("type", "Author"),
new XElement("FirstName", "Joe"),
new XElement("LastName", "Rattz")),
new XElement("BookParticipant",
new XAttribute("type", "Editor"),
new XElement("FirstName", "Ewan"),
new XElement("LastName", "Buckingham"))));
IEnumerable<XElement> elements =
xDocument.Element("BookParticipants").Descendants("FirstName");
// First, I will display the source elements.
foreach (XElement element in elements)
{
Console.WriteLine("Source element: {0} : value = {1}",
element.Name, element.Value);
}
// Now, I will display the ancestor elements for each source element.
foreach (XElement element in elements.AncestorsAndSelf())
{
Console.WriteLine("Ancestor element: {0}", element.Name);
}
// Now, I will display the ancestor elements for each source element.
foreach (XElement element in elements.AncestorsAndSelf("BookParticipant"))
{
Console.WriteLine("Ancestor element: {0}", element.Name);
}
}
//-- Sort Smaple
private static void SortSample()
{
XElement root = XElement.Load("Data.xml");
IEnumerable<decimal> prices =
from el in root.Elements("Data")
let price = (decimal)el.Element("Price")
orderby price
select price;
foreach (decimal el in prices)
Console.WriteLine(el);
}
//-- Find an Element with a Specific Child
private static void FindElementwithSpecificChild()
{
XElement root = XElement.Load("data.xml");
IEnumerable<XElement> tests =
from el in root.Elements("Data")
where (int)el.Element("Quantity") > 3
select el;
foreach (XElement el in tests)
Console.WriteLine((string)el.Attribute("TestId");
}
}
}
http://msdn.microsoft.com/en-us/library/bb387053.aspx
7,25 ->
3
24,50
В
1
89,99
5
4,95
3
66,00
В
10
+0,99
15
29,00
В
8
6,99