- •2. Протокол udp
- •3. Протокол http. Общие сведения.
- •4.Протокол http. Методы запросов. Спецификация mime
- •1Xx Informational («Информационный»)
- •Операции фильтрации
- •6.Работа с документами xml
- •7.Почтовый протокол smtp.
- •8.Почтовый протокол pop3.
- •9.Понятие криптографии. Классификация алгоритмов шифрования.
- •10. Хэширование. Основные алгоритмы хэширования.
- •11. Симметричное шифрование. Основные алгоритмы симметричного шифрования
- •12.Асимметричное шифрование. Основные алгоритмы асимметричного шифрования. Описание алгоритма rsa
- •13. Электронная цифровая подпись.
- •14. Инфраструктура открытых ключей
- •15.Сертификаты X.509. Структура сертификата. Процедура проверки подлинности.
Операции фильтрации
string[] names = { "Tom", "Dick", "Harry", "Harry" };
var query1 = names.Where((a) => a.Length < 4);
var query2 = names.Take(2);
var query3 = names.Distinct();
var query4 = names.SkipWhile((a) => a[0] !='H');
6.Работа с документами xml
Загрузка документа XML
Классы XElement и XDocument предоставляют статические методы Load и Parse для построения дерева X-DOM из имеющегося источника
Load – в качестве источника может выступать файл, ресурс доступный по URI, Stream, TextReader или XmlReader
XDocument xDoc = XDocument.Load("books.xml");
Parse - формирует X-DOM дерево из строки
XDocument xDoc = XDocument.Parse("<catalog><item>Value1</item><item>Value2</item></catalog>");
Создание элементов XML
Конструкторы классов XElement и XDocument (а также метод Add класса XContainer) могут принимать переменное число параметров и имеют следующий вид:
public XElement(XName name, params object[] content)
Таким образом можно указывать любое количество дочерних элементов с произвольным типом при создании или редактировании дерева X-DOM.
При обработке передаваемых параметров действуют следующие правила:
Объекты со значением null не обрабатываются
Если объект унаследован от Xnode или XStreamingElement он будет добавлен в коллекцию дочерних элементов Nodes
Ели объект является атрибутом (XAttribute), он будет добавлен в коллекцию Attributes
Если объект является строкой, он будет преобразован к объекту класса XText
Если передаваемый параметр является коллекцией (реализует интерфейс IEnumerable), то будет осуществлен проход по всей коллекции и указанные выше правила будут применены к каждому элементу коллекции
В остальных случаях объект будет преобразован в строку (вызовом метода ToString), затем строка будет преобразована к объекту класса XText и затем добавлен в коллекцию Nodes.
XDocument xDoc = new XDocument(
new XDeclaration("1.0","utf-8","yes"),
new XElement("root",
null,
new XComment("Новый комментарий"),
"Обычный текст",
new XAttribute("id","100"),
new XElement[]
{
new XElement("item", "Первый элемент"),
new XElement("item", 56993)
},
new XCData("<Текст без экранирования>><@@")
));
xDoc.Save("result.xml");
В результате будет получен следующий XML-файл
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<root id="100">
<!-- Новый комментарий -->
Обычный текст
<item>Первый элемент</item>
<item>56993</item>
<![CDATA[ <Текст без экранирования>><@@ ]]>
</root>
Сохранение документа XML
Существует 2 способа сохранить X-DOM дерево:
ToString – вызов метода ToString на любом из узлов трансформирует его содержимое в строку XML, отформатированную согласно указанным опциям. В качестве параметра данный метод может принимать объект типа SaveOptions
Save – данный метод сохраняет содержимое X-DOM дерева в файл, Stream, TextWriter или XmlWriter.
WriteTo – аналогичен методу Save, но в качестве параметра принимает только объект XmlWriter.
XDocument xDoc = XDocument.Parse("<catalog><item>Value1</item><item>Value2</item></catalog>");
string xDocString = xDoc.ToString();
Console.WriteLine(xDocString);
xDoc.Save("example.xml");
using(XmlWriter xmlWriter = new XmlTextWriter("xmlWriter.xml",Encoding.UTF8);)
{
xDoc.WriteTo(xmlWriter);
}
Создание X-DOM из коллекций объектов с использованием LINQ
Структуру X-DOM можно создавать при помощи LINQ используя различные источники данных. В качестве источника данных может выступать любой источник, к которому применимы запросы LINQ:
LINQ to SQL или Entity Framework
Локальная коллекция с данными
Другая структура X-DOM
Необходимо получить документ XML
/*
<customers>
<customer id="1">
<name>Sue</name>
<buys>3</buys>
</customer>
...
</customers>
*/
var customers =
new XElement("customers",
new XElement("customer",
new XAttribute("id", 1),
new XElement("name", "Sue"),
new XElement("buys", 3)
)
);
var customers =
new XElement("customers",
from c in dataContext.Customers
select
new XElement("customer",
new XAttribute("id", c.ID),
new XElement("name", c.Name),
new XElement("buys", c.Purchases.Count)
)
);