{"id":376352,"date":"2024-05-21T06:48:30","date_gmt":"2024-05-21T06:48:30","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=376352"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=376352","title":{"rendered":"<span>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 XML \u0432 C#<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a78\/5ac\/146\/a785ac146d7e7d7eb3da988f9ec8c573.png\" width=\"780\" height=\"439\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a78\/5ac\/146\/a785ac146d7e7d7eb3da988f9ec8c573.png\"\/><\/figure>\n<p><em>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/em><\/p>\n<p>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 XML-\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0443\u0442\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. XML \u2014 \u044d\u0442\u043e \u0432\u0441\u0435 \u0435\u0449\u0435 \u0433\u0438\u0431\u043a\u0438\u0439 \u0438 \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.<\/p>\n<p><em>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 XML \u0432 C#.<\/em> <\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 XML \u0432 C#<\/h2>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0431\u0430\u0437\u044b. <\/p>\n<p><code>XmlDocument<\/code> \u2014 \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 XML \u0432 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c, \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b. \u0427\u0438\u0442\u0430\u0442\u044c XML \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434\u044b<code>Load<\/code> \u0438 <code>LoadXml<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <code>CreateElement<\/code> \u0438 <code>CreateAttribute<\/code>, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>AppendChild<\/code>.<\/p>\n<p>C\u043e\u0437\u0434\u0430\u0434\u0438\u043c XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0435\u0433\u043e:<\/p>\n<pre><code class=\"cs\">using System; using System.Xml;  class Program {     static void Main()     {         \/\/ \u043d\u043e\u0432\u044b\u0439 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442         XmlDocument doc = new XmlDocument();          \/\/ \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442         XmlElement root = doc.CreateElement(\"users\");         doc.AppendChild(root);          \/\/ \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442         XmlElement user = doc.CreateElement(\"user\");         root.AppendChild(user);          \/\/ \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 user         XmlAttribute attr = doc.CreateAttribute(\"id\");         attr.Value = \"1\";         user.Attributes.Append(attr);          \/\/ \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 user         XmlElement firstName = doc.CreateElement(\"firstName\");         firstName.InnerText = \"John\";         user.AppendChild(firstName);          XmlElement lastName = doc.CreateElement(\"lastName\");         lastName.InnerText = \"Doe\";         user.AppendChild(lastName);          \/\/ \u0441\u0435\u0439\u0432\u0438\u043c XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0432 \u0444\u0430\u0439\u043b         doc.Save(\"users.xml\");     } }<\/code><\/pre>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0448\u0435.<\/p>\n<h4>XmlReader \u0438 XmlWriter<\/h4>\n<p><code>XmlReader<\/code> \u0438 <code>XmlWriter<\/code> \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 XML \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 DOM, \u0442.\u043a \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. <code>XmlReader<\/code> \u0447\u0438\u0442\u0430\u0435\u0442 XML \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 XmlReader:<\/p>\n<pre><code class=\"cs\">using System; using System.Xml;  class Program {     static void Main()     {         \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c XmlReader \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430         using (XmlReader reader = XmlReader.Create(\"example.xml\"))         {             while (reader.Read()) \/\/ \u0447\u0442\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u0441\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430             {                 if (reader.NodeType == XmlNodeType.Element &amp;&amp; reader.Name == \"name\")                 {                     Console.WriteLine(reader.ReadElementContentAsString()); \/\/ \u0447\u0438\u0442\u0430\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 &lt;name>                 }             }         }     } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u044e\u0437\u0430\u0435\u043c <code>XmlReader<\/code> \u0434\u043b\u044f \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f XML-\u0444\u0430\u0439\u043b\u0430. \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e \u0442\u0438\u043f\u0443 \u0443\u0437\u043b\u0430 <code>XmlNodeType.Element<\/code> \u0438 \u0438\u043c\u0435\u043d\u0438 <code>name<\/code>, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0442\u0435\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442.  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 XmlWriter:<\/p>\n<pre><code class=\"cs\">using System; using System.Xml;  class Program {     static void Main()     {         \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c XmlWriter         using (XmlWriter writer = XmlWriter.Create(\"output.xml\"))         {             writer.WriteStartDocument(); \/\/ \u043d\u0430\u0447\u0430\u043b\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430             writer.WriteStartElement(\"users\"); \/\/ \u043d\u0430\u0447\u0430\u043b\u043e \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 &lt;users>              writer.WriteStartElement(\"user\"); \/\/ \u043d\u0430\u0447\u0430\u043b\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 &lt;user>             writer.WriteElementString(\"name\", \"Ivan\"); \/\/\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 &lt;name>             writer.WriteEndElement(); \/\/ \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 &lt;user>              writer.WriteEndElement(); \/\/ \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 &lt;users>             writer.WriteEndDocument(); \/\/ \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430         }     } }<\/code><\/pre>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <code>XmlWriter<\/code> \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e XML-\u0444\u0430\u0439\u043b\u0430 \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439. \u0421\u0442\u0430\u0440\u0442\u0443\u0435\u043c \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 <code>&lt;users><\/code>, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <code>&lt;user><\/code> \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c <code>&lt;name><\/code>, \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442.  <\/p>\n<h4>XDocument<\/h4>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 <code>XDocument<\/code> \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u044b <code>XElement<\/code>, <code>XAttribute<\/code>.<\/p>\n<p><code>XElement<\/code> &#8212; \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u0438 \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0435\u0433\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0442\u0435\u043a\u0441\u0442 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. <\/p>\n<p><code>XAttribute<\/code> \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438 XML-\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u0430\u0440\u044b \u0438\u043c\u044f-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u044e\u0442\u0441\u044f \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c. <\/p>\n<p>C\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u0443 \u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044e\u0437\u0435\u0440\u0430\u0445, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438 \u0438\u043c\u044f:<\/p>\n<pre><code class=\"cs\">using System; using System.Xml.Linq;  class Program {     static void Main()     {         \/\/ \u043d\u043e\u0432\u044b\u0439 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430         XDocument xmlDoc = new XDocument(             new XDeclaration(\"1.0\", \"utf-8\", null),             new XElement(\"users\", \/\/ \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442                 new XElement(\"user\", \/\/ \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442                     new XAttribute(\"id\", \"1\"), \/\/ \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 user                     new XElement(\"name\", \"Ivan\")                 ),                 new XElement(\"user\",                     new XAttribute(\"id\", \"2\"),                     new XElement(\"name\", \"Kolya\")                 )             )         );          Console.WriteLine(xmlDoc.ToString());          \/\/ \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u0444\u0430\u0439\u043b         xmlDoc.Save(\"users.xml\");     } }<\/code><\/pre>\n<p><code>XDocument<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442.<\/p>\n<p><code>XElement<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 <code>users<\/code> \u0438 <code>user<\/code>. \u042d\u043b\u0435\u043c\u0435\u043d\u0442 <code>users<\/code> \u0441\u043b\u0443\u0436\u0438\u0442 \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c, \u0430 <code>user<\/code> &#8212; \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p><code>XAttribute<\/code> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 <code>user<\/code>, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<h4>LINQ<\/h4>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c LINQ \u0441 XML \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"cs\">using System; using System.Linq; using System.Xml.Linq;  class Program {     static void Main()     {         XDocument doc = XDocument.Load(\"books.xml\");          var books = from book in doc.Descendants(\"book\")                     where (int)book.Attribute(\"id\") == 1                     select new                     {                         Title = book.Element(\"title\").Value,                         Author = book.Element(\"author\").Value                     };          foreach (var book in books)         {             Console.WriteLine($\"Title: {book.Title}, Author: {book.Author}\");         }     } }<\/code><\/pre>\n<p>\u0410 \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 XML:<\/p>\n<pre><code class=\"cs\">using System; using System.Xml.Linq; using System.Linq;  class Program {     static void Main()     {         XDocument doc = XDocument.Load(\"books.xml\");          var bookCount = doc.Descendants(\"book\").Count(); \/\/ c\u0447\u0438\u0442\u0430\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043d\u0438\u0433         var maxId = doc.Descendants(\"book\").Max(book => (int)book.Attribute(\"id\")); \/\/ \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 id          Console.WriteLine($\"Total books: {bookCount}, Max ID: {maxId}\");     } }<\/code><\/pre>\n<h4>\u0414\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f XML \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/h4>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 XML \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u042d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u043b\u044f \u0438\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c XML.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <code>XmlSerializer<\/code>, \u0443\u043a\u0430\u0437\u0430\u0432 \u0442\u0438\u043f \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c:<\/p>\n<pre><code class=\"cs\">XmlSerializer serializer = new XmlSerializer(typeof(MyClass));<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c<code>XmlSerializer<\/code> \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f XML \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u0435\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043e\u0431\u044a\u0435\u043a\u0442. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>StreamReader<\/code> \u0438\u043b\u0438 <code>StringReader<\/code>:<\/p>\n<pre><code class=\"cs\">using (StreamReader reader = new StreamReader(\"path_to_file.xml\")) {     MyClass myObject = (MyClass)serializer.Deserialize(reader); }<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>InvalidOperationException<\/code> \u043f\u0440\u0438 \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 XML \u0441\u0445\u0435\u043c\u044b \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443 \u0438\u043b\u0438 <code>XmlException<\/code> \u043f\u0440\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0432 XML. \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u043b\u043e\u043a\u043e\u0432 <code>try-catch<\/code>:<\/p>\n<pre><code class=\"cs\">try {     using (StreamReader reader = new StreamReader(\"path_to_file.xml\"))     {         MyClass myObject = (MyClass)serializer.Deserialize(reader);     } } catch (InvalidOperationException ex) {     Console.WriteLine($\"Invalid XML format: {ex.Message}\"); } catch (XmlException ex) {     Console.WriteLine($\"XML Parsing Error at line {ex.LineNumber}: {ex.Message}\"); } catch (Exception ex) {     Console.WriteLine($\"General error: {ex.Message}\"); }<\/code><\/pre>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043b\u0430\u0441\u0441 <code>Person<\/code> \u0438 XML \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0435:<\/p>\n<pre><code class=\"xml\">&lt;Person>     &lt;Name>Ivan&lt;\/Name>     &lt;Age>30&lt;\/Age> &lt;\/Person><\/code><\/pre>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 <code>Person<\/code> \u0432 C# \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">public class Person {     public string Name { get; set; }     public int Age { get; set; } }<\/code><\/pre>\n<p>\u0414\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u044d\u0442\u043e\u0433\u043e XML \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 <code>Person<\/code> \u0441 <code>XmlSerializer<\/code> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">string xmlData = @\"&lt;Person>&lt;Name>John Doe&lt;\/Name>&lt;Age>30&lt;\/Age>&lt;\/Person>\"; using (StringReader stringReader = new StringReader(xmlData)) {     XmlSerializer serializer = new XmlSerializer(typeof(Person));     Person person = (Person)serializer.Deserialize(stringReader);     Console.WriteLine($\"Name: {person.Name}, Age: {person.Age}\"); }<\/code><\/pre>\n<h4>XML \u0441\u0445\u0435\u043c\u044b \u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0432 C#<\/h4>\n<p>XML \u0441\u0445\u0435\u043c\u044b &#8212; \u044d\u0442\u043e \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b XML \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432\u0441\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432. \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0447\u0442\u043e XML \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c.<\/p>\n<p>XML \u0441\u0445\u0435\u043c\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435, \u0438\u0445 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0445\u0435\u043c\u0430 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043d\u0438\u0433 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"xml\">&lt;xs:schema xmlns:xs=\"http:\/\/www.w3.org\/2001\/XMLSchema\">     &lt;xs:element name=\"library\">         &lt;xs:complexType>             &lt;xs:sequence>                 &lt;xs:element name=\"book\" maxOccurs=\"unbounded\">                     &lt;xs:complexType>                         &lt;xs:sequence>                             &lt;xs:element name=\"title\" type=\"xs:string\"\/>                             &lt;xs:element name=\"author\" type=\"xs:string\"\/>                             &lt;xs:element name=\"isbn\" type=\"xs:string\"\/>                             &lt;xs:element name=\"price\" type=\"xs:decimal\"\/>                         &lt;\/xs:sequence>                     &lt;\/xs:complexType>                 &lt;\/xs:element>             &lt;\/xs:sequence>         &lt;\/xs:complexType>     &lt;\/xs:element> &lt;\/xs:schema> <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 XML \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 XSD \u0441\u0445\u0435\u043c\u043e\u0439, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b <code>XmlReader<\/code> \u0438 <code>XmlReaderSettings<\/code> \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u043d <code>System.Xml.Schema<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cs\">using System; using System.Xml; using System.Xml.Schema;  class Program {     static void Main()     {         XmlReaderSettings settings = new XmlReaderSettings();         settings.Schemas.Add(null, \"library.xsd\");         settings.ValidationType = ValidationType.Schema;          XmlReader reader = XmlReader.Create(\"library.xml\", settings);         XmlDocument document = new XmlDocument();         document.Load(reader);         ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);         document.Validate(eventHandler);     }      static void ValidationEventHandler(object sender, ValidationEventArgs e)     {         if (e.Severity == XmlSeverityType.Error)         {             Console.WriteLine(\"Error: {0}\", e.Message);         }         else if (e.Severity == XmlSeverityType.Warning)         {             Console.WriteLine(\"Warning: {0}\", e.Message);         }     } }<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c, \u0447\u0442\u043e XML \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0442\u043e\u0447\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c.<\/p>\n<hr\/>\n<p>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0435\u043c \u0432\u0430\u0441 \u043d\u0430 <a href=\"https:\/\/otus.pw\/RD8v\/\">\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0443\u0440\u043e\u043a<\/a>, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u0435\u043c\u044b \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 .net \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445, \u0438 \u043a\u0430\u043a \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0432 \u044d\u0442\u043e\u043c ArrayPool, Span.<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/otus.pw\/RD8v\/\">\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0432\u0435\u0431\u0438\u043d\u0430\u0440<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/814949\/\"> https:\/\/habr.com\/ru\/articles\/814949\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p><em>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/em><\/p>\n<p>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 XML-\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0443\u0442\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. XML \u2014 \u044d\u0442\u043e \u0432\u0441\u0435 \u0435\u0449\u0435 \u0433\u0438\u0431\u043a\u0438\u0439 \u0438 \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.<\/p>\n<p><em>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 XML \u0432 C#.<\/em> <\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 XML \u0432 C#<\/h2>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0431\u0430\u0437\u044b. <\/p>\n<p><code>XmlDocument<\/code> \u2014 \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 XML \u0432 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c, \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b. \u0427\u0438\u0442\u0430\u0442\u044c XML \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434\u044b<code>Load<\/code> \u0438 <code>LoadXml<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <code>CreateElement<\/code> \u0438 <code>CreateAttribute<\/code>, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>AppendChild<\/code>.<\/p>\n<p>C\u043e\u0437\u0434\u0430\u0434\u0438\u043c XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0435\u0433\u043e:<\/p>\n<pre><code class=\"cs\">using System; using System.Xml;  class Program {     static void Main()     {         \/\/ \u043d\u043e\u0432\u044b\u0439 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442         XmlDocument doc = new XmlDocument();          \/\/ \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442         XmlElement root = doc.CreateElement(\"users\");         doc.AppendChild(root);          \/\/ \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442         XmlElement user = doc.CreateElement(\"user\");         root.AppendChild(user);          \/\/ \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 user         XmlAttribute attr = doc.CreateAttribute(\"id\");         attr.Value = \"1\";         user.Attributes.Append(attr);          \/\/ \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 user         XmlElement firstName = doc.CreateElement(\"firstName\");         firstName.InnerText = \"John\";         user.AppendChild(firstName);          XmlElement lastName = doc.CreateElement(\"lastName\");         lastName.InnerText = \"Doe\";         user.AppendChild(lastName);          \/\/ \u0441\u0435\u0439\u0432\u0438\u043c XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0432 \u0444\u0430\u0439\u043b         doc.Save(\"users.xml\");     } }<\/code><\/pre>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0448\u0435.<\/p>\n<h4>XmlReader \u0438 XmlWriter<\/h4>\n<p><code>XmlReader<\/code> \u0438 <code>XmlWriter<\/code> \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 XML \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 DOM, \u0442.\u043a \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. <code>XmlReader<\/code> \u0447\u0438\u0442\u0430\u0435\u0442 XML \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 XmlReader:<\/p>\n<pre><code class=\"cs\">using System; using System.Xml;  class Program {     static void Main()     {         \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c XmlReader \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430         using (XmlReader reader = XmlReader.Create(\"example.xml\"))         {             while (reader.Read()) \/\/ \u0447\u0442\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u0441\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430             {                 if (reader.NodeType == XmlNodeType.Element &amp;&amp; reader.Name == \"name\")                 {                     Console.WriteLine(reader.ReadElementContentAsString()); \/\/ \u0447\u0438\u0442\u0430\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 &lt;name>                 }             }         }     } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u044e\u0437\u0430\u0435\u043c <code>XmlReader<\/code> \u0434\u043b\u044f \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f XML-\u0444\u0430\u0439\u043b\u0430. \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e \u0442\u0438\u043f\u0443 \u0443\u0437\u043b\u0430 <code>XmlNodeType.Element<\/code> \u0438 \u0438\u043c\u0435\u043d\u0438 <code>name<\/code>, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0442\u0435\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442.  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 XmlWriter:<\/p>\n<pre><code class=\"cs\">using System; using System.Xml;  class Program {     static void Main()     {         \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c XmlWriter         using (XmlWriter writer = XmlWriter.Create(\"output.xml\"))         {             writer.WriteStartDocument(); \/\/ \u043d\u0430\u0447\u0430\u043b\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430             writer.WriteStartElement(\"users\"); \/\/ \u043d\u0430\u0447\u0430\u043b\u043e \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 &lt;users>              writer.WriteStartElement(\"user\"); \/\/ \u043d\u0430\u0447\u0430\u043b\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 &lt;user>             writer.WriteElementString(\"name\", \"Ivan\"); \/\/\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 &lt;name>             writer.WriteEndElement(); \/\/ \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 &lt;user>              writer.WriteEndElement(); \/\/ \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 &lt;users>             writer.WriteEndDocument(); \/\/ \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430         }     } }<\/code><\/pre>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <code>XmlWriter<\/code> \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e XML-\u0444\u0430\u0439\u043b\u0430 \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439. \u0421\u0442\u0430\u0440\u0442\u0443\u0435\u043c \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 <code>&lt;users><\/code>, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <code>&lt;user><\/code> \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c <code>&lt;name><\/code>, \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442.  <\/p>\n<h4>XDocument<\/h4>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 <code>XDocument<\/code> \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u044b <code>XElement<\/code>, <code>XAttribute<\/code>.<\/p>\n<p><code>XElement<\/code> &#8212; \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u0438 \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0435\u0433\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0442\u0435\u043a\u0441\u0442 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. <\/p>\n<p><code>XAttribute<\/code> \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438 XML-\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u0430\u0440\u044b \u0438\u043c\u044f-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u044e\u0442\u0441\u044f \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c. <\/p>\n<p>C\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u0443 \u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044e\u0437\u0435\u0440\u0430\u0445, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438 \u0438\u043c\u044f:<\/p>\n<pre><code class=\"cs\">using System; using System.Xml.Linq;  class Program {     static void Main()     {         \/\/ \u043d\u043e\u0432\u044b\u0439 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430         XDocument xmlDoc = new XDocument(             new XDeclaration(\"1.0\", \"utf-8\", null),             new XElement(\"users\", \/\/ \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442                 new XElement(\"user\", \/\/ \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442                     new XAttribute(\"id\", \"1\"), \/\/ \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 user                     new XElement(\"name\", \"Ivan\")                 ),                 new XElement(\"user\",                     new XAttribute(\"id\", \"2\"),                     new XElement(\"name\", \"Kolya\")                 )             )         );          Console.WriteLine(xmlDoc.ToString());          \/\/ \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u0444\u0430\u0439\u043b         xmlDoc.Save(\"users.xml\");     } }<\/code><\/pre>\n<p><code>XDocument<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442.<\/p>\n<p><code>XElement<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 <code>users<\/code> \u0438 <code>user<\/code>. \u042d\u043b\u0435\u043c\u0435\u043d\u0442 <code>users<\/code> \u0441\u043b\u0443\u0436\u0438\u0442 \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c, \u0430 <code>user<\/code> &#8212; \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p><code>XAttribute<\/code> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 <code>user<\/code>, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<h4>LINQ<\/h4>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c LINQ \u0441 XML \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"cs\">using System; using System.Linq; using System.Xml.Linq;  class Program {     static void Main()     {         XDocument doc = XDocument.Load(\"books.xml\");          var books = from book in doc.Descendants(\"book\")                     where (int)book.Attribute(\"id\") == 1                     select new                     {                         Title = book.Element(\"title\").Value,                         Author = book.Element(\"author\").Value                     };          foreach (var book in books)         {             Console.WriteLine($\"Title: {book.Title}, Author: {book.Author}\");         }     } }<\/code><\/pre>\n<p>\u0410 \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 XML:<\/p>\n<pre><code class=\"cs\">using System; using System.Xml.Linq; using System.Linq;  class Program {     static void Main()     {         XDocument doc = XDocument.Load(\"books.xml\");          var bookCount = doc.Descendants(\"book\").Count(); \/\/ c\u0447\u0438\u0442\u0430\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043d\u0438\u0433         var maxId = doc.Descendants(\"book\").Max(book => (int)book.Attribute(\"id\")); \/\/ \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 id          Console.WriteLine($\"Total books: {bookCount}, Max ID: {maxId}\");     } }<\/code><\/pre>\n<h4>\u0414\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f XML \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/h4>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 XML \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u042d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u043b\u044f \u0438\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c XML.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <code>XmlSerializer<\/code>, \u0443\u043a\u0430\u0437\u0430\u0432 \u0442\u0438\u043f \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c:<\/p>\n<pre><code class=\"cs\">XmlSerializer serializer = new XmlSerializer(typeof(MyClass));<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c<code>XmlSerializer<\/code> \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f XML \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u0435\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043e\u0431\u044a\u0435\u043a\u0442. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>StreamReader<\/code> \u0438\u043b\u0438 <code>StringReader<\/code>:<\/p>\n<pre><code class=\"cs\">using (StreamReader reader = new StreamReader(\"path_to_file.xml\")) {     MyClass myObject = (MyClass)serializer.Deserialize(reader); }<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>InvalidOperationException<\/code> \u043f\u0440\u0438 \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 XML \u0441\u0445\u0435\u043c\u044b \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443 \u0438\u043b\u0438 <code>XmlException<\/code> \u043f\u0440\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0432 XML. \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u043b\u043e\u043a\u043e\u0432 <code>try-catch<\/code>:<\/p>\n<pre><code class=\"cs\">try {     using (StreamReader reader = new StreamReader(\"path_to_file.xml\"))     {         MyClass myObject = (MyClass)serializer.Deserialize(reader);     } } catch (InvalidOperationException ex) {     Console.WriteLine($\"Invalid XML format: {ex.Message}\"); } catch (XmlException ex) {     Console.WriteLine($\"XML Parsing Error at line {ex.LineNumber}: {ex.Message}\"); } catch (Exception ex) {     Console.WriteLine($\"General error: {ex.Message}\"); }<\/code><\/pre>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043b\u0430\u0441\u0441 <code>Person<\/code> \u0438 XML \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0435:<\/p>\n<pre><code class=\"xml\">&lt;Person>     &lt;Name>Ivan&lt;\/Name>     &lt;Age>30&lt;\/Age> &lt;\/Person><\/code><\/pre>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 <code>Person<\/code> \u0432 C# \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">public class Person {     public string Name { get; set; }     public int Age { get; set; } }<\/code><\/pre>\n<p>\u0414\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u044d\u0442\u043e\u0433\u043e XML \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 <code>Person<\/code> \u0441 <code>XmlSerializer<\/code> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">string xmlData = @\"&lt;Person>&lt;Name>John Doe&lt;\/Name>&lt;Age>30&lt;\/Age>&lt;\/Person>\"; using (StringReader stringReader = new StringReader(xmlData)) {     XmlSerializer serializer = new XmlSerializer(typeof(Person));     Person person = (Person)serializer.Deserialize(stringReader);     Console.WriteLine($\"Name: {person.Name}, Age: {person.Age}\"); }<\/code><\/pre>\n<h4>XML \u0441\u0445\u0435\u043c\u044b \u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0432 C#<\/h4>\n<p>XML \u0441\u0445\u0435\u043c\u044b &#8212; \u044d\u0442\u043e \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b XML \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432\u0441\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432. \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0447\u0442\u043e XML \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c.<\/p>\n<p>XML \u0441\u0445\u0435\u043c\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435, \u0438\u0445 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0445\u0435\u043c\u0430 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043d\u0438\u0433 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"xml\">&lt;xs:schema xmlns:xs=\"http:\/\/www.w3.org\/2001\/XMLSchema\">     &lt;xs:element name=\"library\">         &lt;xs:complexType>             &lt;xs:sequence>                 &lt;xs:element name=\"book\" maxOccurs=\"unbounded\">                     &lt;xs:complexType>                         &lt;xs:sequence>                             &lt;xs:element name=\"title\" type=\"xs:string\"\/>                             &lt;xs:element name=\"author\" type=\"xs:string\"\/>                             &lt;xs:element name=\"isbn\" type=\"xs:string\"\/>                             &lt;xs:element name=\"price\" type=\"xs:decimal\"\/>                         &lt;\/xs:sequence>                     &lt;\/xs:complexType>                 &lt;\/xs:element>             &lt;\/xs:sequence>         &lt;\/xs:complexType>     &lt;\/xs:element> &lt;\/xs:schema> <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 XML \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 XSD \u0441\u0445\u0435\u043c\u043e\u0439, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b <code>XmlReader<\/code> \u0438 <code>XmlReaderSettings<\/code> \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u043d <code>System.Xml.Schema<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cs\">using System; using System.Xml; using System.Xml.Schema;  class Program {     static void Main()     {         XmlReaderSettings<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-376352","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/376352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=376352"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/376352\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=376352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=376352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=376352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}