XML в С# Урок 6. Чтение с помощью XDocument

.NET XML   7 декабря 2012  Автор статьи:  

Для того, чтобы загрузить XML файл можно воспользоваться методом Load(), а для того, чтобы считать его из строки методом Parse(). После этого можно получать коллекции, которые содержатся в нем. Попробуем разобрать XML документ, который мы генерировали в предыдущем примере. Для этого будем использовать два метода: Element() и Elements(). Их можно вызывать пустыми, а можно туда записать имя элемента, который вы хотите найти. Очевидно, что Element возвращает один элемент, а Elements коллекцию элементов. Так как в основе XDocement лежит LINQ, то мы можем создавать различные интересные конструкции с помощью него. Как минимум по коллекции элементов можно будет пробежаться с помощью цикла foreach(), при этом возможные различные повторные вызовы, т.е у Element() можно вызвать Elements() и так далее. Я не буду приводит в этом уроке сложные конструкции, так как они достаточно специфичны, но вы можете сами попробовать создать их, если достаточно знакомы с LINQ. Для того, чтобы у любого элемента посмотреть его значение, достаточно использовать свойство Value. Приведу код, который разбирает XML документ и преобразует его в HTML код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace CybernTools
{
public class Categories
{
public IList GenerateHTML()
{
IList categories = new List();
XDocument doc = XDocument.Load(@"http://smolotochka.ru/categories.xml");
var xcategories = doc.Element("categories").Elements();
foreach (var xcategory in xcategories)
{
string name = xcategory.Element("name").Value;
string url = xcategory.Element("url").Value;
var xsubCategories = xcategory.Element("subcategories").Elements();
categories.Add("

  • "+name+"
  • ");
    foreach (var xsubCategory in xsubCategories)
    {
    string subName = xsubCategory.Element("name").Value;
    string subUrl = xsubCategory.Element("url").Value;
    categories.Add("

  • " + subName + "
  • ");
    }
    }
    return categories;

    }
    }
    }

    Научиться программировать

    • на Delphi

    • на Java

    • на C++