Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ОДЕСЬКА НАЦІОНАЛЬНА АКАДЕМІЯ ХАРЧОВИХ ТЕХНОЛОГІЙ
ІНСТИТУТ ХОЛОДУ, КРІОТЕХНОЛОГІЇ ТА ЕКОЕНЕРГЕТИКИ
КАФЕДРА ІНФОРМАЦІЙНИХ СИСТЕМ ТА МЕРЕЖ
З предмету: ТРІС
По темі: «Вивчення технології LINQ to XML»
Виконав студент 546 групи
Чумаченко Олександр
Прийняв:
Шестопалов С.В.
Одеса, 2012
Вариант №8
XML-документ А
<?xml version="1.0"?>
<PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20">
<Address Type="Shipping">
<Name>Ellen Adams</Name>
<Street>123 Maple Street</Street>
<City>Mill Valley</City>
<State>CA</State>
<Zip>10999</Zip>
<Country>USA</Country>
</Address>
<Address Type="Billing">
<Name>Tai Yee</Name>
<Street>8 Oak Avenue</Street>
<City>Old Town</City>
<State>PA</State>
<Zip>95819</Zip>
<Country>USA</Country>
</Address>
<DeliveryNotes>Please leave packages in shed by driveway.</DeliveryNotes>
<Items>
<Item PartNumber="872-AA">
<ProductName>Lawnmower</ProductName>
<Quantity>1</Quantity>
<USPrice>148.95</USPrice>
<Comment>Confirm this is electric</Comment>
</Item>
<Item PartNumber="926-AA">
<ProductName>Baby Monitor</ProductName>
<Quantity>2</Quantity>
<USPrice>39.98</USPrice>
<ShipDate>1999-05-21</ShipDate>
</Item>
</Items>
</PurchaseOrder>
XML-документ D
<Root>
<p id=""1""/>
<ul>abc</ul>
<Child>
<p id=""2""/>
<notul/>
<p id=""3""/>
<ul>def</ul>
<p id=""4""/>
</Child>
<Child>
<p id=""5""/>
<notul/>
<p id=""6""/>
<ul>abc</ul>
<p id=""7""/>
</Child>
</Root>
XML-документ F
<?xml version="1.0" encoding="utf-8" ?>
<ITEMS>
<CubeList>
<Cube name="CUB-A">
<CubeX currency="CUB-A-X" X="10"/>
<CubeY currency="CUB-A-Y" Y="25"/>
</Cube>
<Cube name="CUB-B">
<CubeX currency="CUB-B-X" X="25"/>
<CubeY currency="CUB-B-Y" Y="15"/>
</Cube>
</CubeList>
</ITEMS>
Код программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
/* Задание 1 */
XElement root = XElement.Load("../../A.xml");
IEnumerable<XElement> address =
from el in root.Elements("Address")
where (string)el.Attribute("Type") == "Billing"
select el;
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.WriteLine("Задание 1:");
Console.ForegroundColor = ConsoleColor.Gray;
foreach (XElement el in address)
Console.WriteLine(el);
/* Задание 2 */
// Создание XML-файла из строки
string _root =
@"<Root>
<p id='1'/>
<ul>abc</ul>
<Child>
<p id='2'/>
<notul/>
<p id='3'/>
<ul>def</ul>
<p id='4'/>
</Child>
<Child>
<p id='5'/>
<notul/>
<p id='6'/>
<ul>abc</ul>
<p id='7'/>
</Child>
</Root>";
XElement Root = XElement.Parse(_root);
Root.Save("../../D.xml");
// Выбор всех элементов p, сразу за которыми следует элемент ul
XElement doc2 = XElement.Load("../../D.xml");
IEnumerable<XElement> items =
from e in doc2.Descendants("p")
let z = e.ElementsAfterSelf().FirstOrDefault()
where z != null && z.Name.LocalName == "ul"
select e;
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.WriteLine("\nЗадание 2:");
Console.ForegroundColor = ConsoleColor.Gray;
foreach (XElement e in items)
Console.WriteLine("id = {0}", (string)e.Attribute("id"));
/* Задание 3 */
XElement Items =
new XElement("ITEMS",
new XElement("CybeList",
new XElement("Cube", new XAttribute("name", "CUB-A"),
new XElement("CubeX", new XAttribute("currency","CUB-A-X"), new XAttribute("X","10")),
new XElement("CubeY", new XAttribute("currency","CUB-A-Y"), new XAttribute("Y","25"))
),
new XElement("Cube", new XAttribute("name","CUB-B"),
new XElement("CubeX", new XAttribute("currency","CUB-B-X"), new XAttribute("X","25")),
new XElement("CubeY", new XAttribute("currency","CUB-B-Y"), new XAttribute("Y","15"))
)
)
);
Items.Save("../../F.xml");
// Вывод периметра фигуры CUB-A
XElement Cube = XElement.Load("../../F.xml");
IEnumerable<XElement> _cube =
from el in Cube.Descendants("Cube")
where (string)el.Attribute("name") == "CUB-A"
select el;
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.WriteLine("\nЗадание 3:");
Console.ForegroundColor = ConsoleColor.Gray;
foreach (XElement el in _cube)
{
//Console.WriteLine(el);
var _x = ((int)el.Element("CubeX").Attribute("X"));
var _y = ((int)el.Element("CubeY").Attribute("Y"));
var _perimetr = (_x + _y)*2;
Console.WriteLine("Периметр фигуры = {0}", _perimetr);
}
Console.ReadLine();
}
}
}
Скриншот программы: