Знайомство з Linq to XML
Розповім основні принципи роботи з Linq to XML. Для тих, хто ніколи не працював з даною технологію, надіюсь, що ця інформація буде корисною.
1. Створення Xml файлу
// Назва xml файлу
string fileName = Server.MapPath("~/App_Data/Cars.xml");
int carIndex = 1;
// Створюємо файл
XDocument doc = new XDocument(
new XElement("Cars",
new XElement("Car",
new XAttribute("Id", carIndex++),
new XElement("Name", "Ford Mustang"),
new XElement("Country", "USA")),
new XElement("Car",
new XAttribute("Id", carIndex++),
new XElement("Name", "Audi R8"),
new XElement("Country", "Germany")),
new XElement("Car",
new XAttribute("Id", carIndex++),
new XElement("Name", "Nissan GTR"),
new XElement("Country", "Japan"))
)
);
// Зберігаємо його
doc.Save(fileName);
Отримаємо:
2. Отримання даних
string fileName = Server.MapPath("~/App_Data/Cars.xml");
XDocument doc = XDocument.Load(fileName);
string output = string.Empty;
// Проходимо по всім елементам
foreach (XElement xelement in doc.Root.Elements())
{
// Виводимо атрибут Id
output += string.Format("{0} {1}: ", xelement.Name, xelement.Attribute("Id").Value);
// Виводимо дочірні елементи (назви і значення)
foreach (XElement element in xelement.Elements())
{
output += string.Format("{0}: {1} ", element.Name, element.Value);
}
output += System.Environment.NewLine;
}
Отримаємо в змінній output:
Car 1: Name: Ford Mustang Country: USA
Car 2: Name: Audi R8 Country: Germany
Car 3: Name: Nissan GTR Country: Japan
3. Зміна (Update) даних
string fileName = Server.MapPath("~/App_Data/Cars.xml");
XDocument doc = XDocument.Load(fileName);
// Беремо перший дочірній елемент
XNode node = doc.Root.FirstNode;
if (node.NodeType == System.Xml.XmlNodeType.Element)
{
XElement element = node as XElement;
element.Attribute("Id").Value = "5";
}
doc.Save(fileName);
Отримаємо змінений файл:
4. Додавання (Insert) даних
string fileName = Server.MapPath("~/App_Data/Cars.xml");
XDocument doc = XDocument.Load(fileName);
XElement element = new XElement("Car",
new XAttribute("Id", "10"),
new XElement("Name", "Tata Nano"),
new XElement("Country", "India"));
doc.Root.Add(element);
doc.Save(fileName);
Отримаємо змінений файл:
5. Видалення (Delete) даних
string fileName = Server.MapPath("~/App_Data/Cars.xml");
XDocument doc = XDocument.Load(fileName);
IEnumerable
cars.Remove();
doc.Save(fileName);
Отримаємо змінений файл:
6. Запити
Виведемо кількість машин, які випускаються в Індії:
string fileName = Server.MapPath("~/App_Data/Cars.xml");
XDocument doc = XDocument.Load(fileName);
IEnumerable
int count = cars.Count();
На виході count = 1.
Ось і все поки що. Користуйтесь!