Какие классы в .Net помогают читать и анализировать XML файл?


#1

Какие классы в .Net помогают упростить работу с XML файлами? Например, поиск определённого тега или дописывание атрибута к тегу, навигация по XML файлу и т.д.


#2

классы XmlDocument, XmlNode, XmlTextReader, XmlTextWriter, XPathDocument, XPathNavigator и другие.

Также можете посмотреть пространства имён System.Xml и System.Xml.XPath


#3

XmlDocument - позволяет загрузить в себя XML файл и считать его содержимое через свойства

var document = new XmlDocument();
document.Load("text.xml");

Console.WriteLine(document.InnerText);    // выведет только внутренний текст тегов

Console.WriteLine(document.InnerXml);   // выведет весь XML  файл

XmlTextReader - позволяет потегово считать XML файл, например:

FileStream stream = new FileStream("text.xml", FileMode.Open);

XmlTextReader xmlReader = new XmlTextReader(stream);

while (xmlReader.Read())
{
    Console.WriteLine("NodeType: {0} Name: {1} Value: {2}", xmlReader.NodeType, xmlReader.Name, xmlReader.Value);
}


xmlReader.Close();
stream.Close();

через свойства (NodeType, Name, Value, ...) можно получить различную информацию о теге (его тип, имя ...)

XmlNode - позволяет записать в себя всю информацию о теге (включая и информацию о его внутренних тегах)

var document = new XmlDocument();
document.Load("text.xml");

XmlNode root = document.DocumentElement;

Console.WriteLine("document.DocumentElement = {0}\n", root.LocalName);

foreach (XmlNode item in root.ChildNodes)
{
    Console.WriteLine("Found Child:");
    foreach (XmlNode child in item.ChildNodes)
    {
        Console.WriteLine(сhild.Name + ": " + сhild.InnerText);
    }
}

XmlTextWriter - позволяет информацию в XML файл

 var xmlWriter = new XmlTextWriter("text.xml", null);

 xmlWriter.WriteStartDocument();                  // Заголовок XML 
 xmlWriter.WriteStartElement("MyFile");      // Корневой элемент 
 xmlWriter.WriteStartElement("Element");        
 xmlWriter.WriteStartAttribute("attribute");       // Атрибут - attribute
 xmlWriter.WriteString("123");                      // ="8"
 xmlWriter.WriteEndAttribute();                   // 
 xmlWriter.WriteString("Element.text");                // текст в таге Element
 xmlWriter.WriteEndElement();                     // </Element>
 xmlWriter.WriteEndElement();                     // </MyFile>

 xmlWriter.Close();

XPathDocument и XPathNavigator - работают также как в любом ХPath