{"id":358422,"date":"2024-05-21T00:11:29","date_gmt":"2024-05-21T00:11:29","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=358422"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-21T00:11:29","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=358422","title":{"rendered":"<span>\u041a\u0430\u043a \u0438 \u0437\u0430\u0447\u0435\u043c \u043c\u044b \u043f\u0430\u0440\u0441\u0438\u043c XML<\/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<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/XML\">XML<\/a>. \u042d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u043e\u0448\u0435\u043b \u0432 \u043d\u0430\u0448\u0443 \u0436\u0438\u0437\u043d\u044c, \u0447\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043d \u0441\u0430\u043c \u0438\u043b\u0438 \u0435\u0433\u043e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430. \u0420\u0430\u0437\u0431\u043e\u0440 XML &#8212; \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0438\u043f\u043e\u0432\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043d\u043e \u0434\u0430\u0436\u0435 \u0432 \u043d\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0430\u0440\u0441\u0438\u0442\u044c XML, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043c\u044b \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043d\u0430 C++.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/bd2\/8c1\/6e1\/bd28c16e1b874cb0d21a7dd21b9223a4.jpg\" width=\"1000\" height=\"679\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bd2\/8c1\/6e1\/bd28c16e1b874cb0d21a7dd21b9223a4.jpg\" data-blurred=\"true\"\/><\/figure>\n<h2>\u041e \u043d\u0430\u0441<\/h2>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 &#8212; \u044d\u0442\u043e <strong>Saby<\/strong>, \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0431\u0438\u0437\u043d\u0435\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0438 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0441 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u043c\u0438, \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u0440\u0433\u0430\u043d\u0430\u043c\u0438 \u0438 \u043e\u0431\u044b\u043a\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043b\u044e\u0434\u044c\u043c\u0438.<\/p>\n<p>XML-\u0444\u0430\u0439\u043b\u044b &#8212; \u043e\u0434\u0438\u043d \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0418\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u0432 \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u0440\u0433\u0430\u043d\u044b, \u043e\u0431\u043c\u0435\u043d \u0441\u043a\u043b\u0430\u0434\u0441\u043a\u0438\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043e\u0431\u043e\u0440\u043e\u0442 \u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0415\u0449\u0435 \u043d\u0430 \u0437\u0430\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043d\u0443\u0436\u043d\u044b \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p><strong>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440<\/strong> &#8212; \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0435\u0447\u0430\u0442\u044c<\/strong> &#8212; \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0431\u0443\u043c\u0430\u0436\u043d\u044b\u0445 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/strong> &#8212; \u0434\u043b\u044f \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/strong> &#8212; \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c\u043e \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 &#8212; \u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u043e\u0432, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432, \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u043e\u0432. \u0417\u0430\u0442\u043e \u0438\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/XML_Schema_(W3C)\">XML-\u0441\u0445\u0435\u043c<\/a>.<\/p>\n<p>\u0422\u0430\u043a \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 <strong>\u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/strong>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/d69\/bb4\/f21\/d69bb4f21f9b8a841144f4018fed4369.jpg\" alt=\"\u0422\u0430\u043a\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0437\u0433\u043b\u044f\u0434\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0441\u0447\u0435\u0442-\u0444\u0430\u043a\u0442\u0443\u0440\u0443\" title=\"\u0422\u0430\u043a\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0437\u0433\u043b\u044f\u0434\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0441\u0447\u0435\u0442-\u0444\u0430\u043a\u0442\u0443\u0440\u0443\" width=\"7850\" height=\"6200\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d69\/bb4\/f21\/d69bb4f21f9b8a841144f4018fed4369.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0422\u0430\u043a\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0437\u0433\u043b\u044f\u0434\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0441\u0447\u0435\u0442-\u0444\u0430\u043a\u0442\u0443\u0440\u0443<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u0432\u0441\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f.<\/p>\n<p><strong>\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439<\/strong> \u043c\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u041d\u0414 \u043f\u043e \u041d\u0414\u0421, \u0441\u0447\u0435\u0442-\u0444\u0430\u043a\u0442\u0443\u0440\u0430 \u0438 \u0442.\u0434.) \u0432 \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0447\u0430\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 (\u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438).<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 (\u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438).<\/p>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043c\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438).<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0424\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442<\/strong> &#8212; \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/770\/d59\/f0a\/770d59f0a512bd92db8c7339ac3a69cc.png\" alt=\"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 XML. \u041f\u0440\u043e\u0441\u0442\u043e \u0438 \u0441\u043e \u0432\u043a\u0443\u0441\u043e\u043c.\" title=\"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 XML. \u041f\u0440\u043e\u0441\u0442\u043e \u0438 \u0441\u043e \u0432\u043a\u0443\u0441\u043e\u043c.\" width=\"1887\" height=\"921\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/770\/d59\/f0a\/770d59f0a512bd92db8c7339ac3a69cc.png\"\/><\/p>\n<div><figcaption>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 XML. \u041f\u0440\u043e\u0441\u0442\u043e \u0438 \u0441\u043e \u0432\u043a\u0443\u0441\u043e\u043c.<\/figcaption><\/div>\n<\/figure>\n<p>\u0424\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e XML. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0444\u0430\u0439\u043b\u043e\u0432 (<a href=\"https:\/\/ru.wikipedia.org\/wiki\/JSON\">JSON<\/a>, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%84%D0%B0%D0%B9%D0%BB\">TXT <\/a>\u0438 \u0442.\u0434.). \u041d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u043d\u0430 \u043f\u0430\u0440\u0441\u0435\u0440\u0430\u0445 XML \u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u0445.<\/p>\n<h2>\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 XML \u0432 Saby<\/h2>\n<h4>\u041e\u0431\u0449\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/h4>\n<p>\u041b\u044e\u0431\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041d\u043e \u0435\u0441\u043b\u0438 \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0432\u0441\u0435 \u043e\u0431\u0435\u0440\u0442\u043a\u0438, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0447\u0443\u044e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443, \u0442\u043e \u0432\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0432\u0435\u0441\u0442\u0438 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u044d\u0442\u0430\u043f\u0430\u043c:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u041d\u0414\u0421 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0438\u043b\u0438 \u0441\u0447\u0435\u0442-\u0444\u0430\u043a\u0442\u0443\u0440\u0430)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p>\u041f\u0430\u0440\u0441\u0438\u043d\u0433 \u0444\u0430\u0439\u043b\u0430 \u0438 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u0430<\/p>\n<\/li>\n<\/ol>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0444\u0430\u0439\u043b\u0430 \u0438 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443.<\/p>\n<h4>\u042d\u0442\u0430\u043f 1. \u041d\u0430\u0447\u0430\u043b\u043e.<\/h4>\n<p>\u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0431\u044b\u043b\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435, \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u043b\u0435\u043a\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0437\u0430\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043c\u044b \u043d\u0435 \u0443\u043c\u0435\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Document_Object_Model\">DOM-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/a>. \u041e\u043d\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c XML-\u0434\u0435\u0440\u0435\u0432\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0441\u0435\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<\/li>\n<\/ul>\n<p><em>\u0415\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u0431\u043e\u0440 XML \u0447\u0435\u0440\u0435\u0437 DOM-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u0448\u043a\u0430\u0444\u0430, \u0442\u043e \u0442\u044b \u0443\u0436\u0435 \u0432\u044b\u0442\u0430\u0449\u0438\u043b \u0432\u0441\u0435 \u0432\u0435\u0449\u0438 \u0438\u0437 \u0448\u043a\u0430\u0444\u0430, \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b, \u0433\u0434\u0435 \u0438 \u0447\u0442\u043e \u043b\u0435\u0436\u0438\u0442, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043d\u0438\u043c\u0438 \u0442\u043e, \u0447\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e.<\/em><\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u0430 <a href=\"https:\/\/xerces.apache.org\/xerces-c\/\">Xerces-C<\/a>, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 API \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 XML. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/pugixml.org\/\">PugiXml<\/a>, \u043d\u043e \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c \u0440\u0430\u0434\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 DOM-\u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7f2\/a27\/c04\/7f2a27c04f145eac760754a51bd3b639.png\" alt=\"\u0412\u0440\u0435\u043c\u044f\" title=\"\u0412\u0440\u0435\u043c\u044f\" width=\"3840\" height=\"2880\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7f2\/a27\/c04\/7f2a27c04f145eac760754a51bd3b639.png\"\/><\/p>\n<div><figcaption>\u0412\u0440\u0435\u043c\u044f<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ef6\/97d\/d9a\/ef697dd9ac02560bb99702eab5a7cffc.png\" alt=\"\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430\" title=\"\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430\" width=\"3840\" height=\"2880\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ef6\/97d\/d9a\/ef697dd9ac02560bb99702eab5a7cffc.png\"\/><\/p>\n<div><figcaption>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6d0\/f63\/6de\/6d0f636def9d41f59ed15cce620a9ba8.png\" alt=\"\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438\" title=\"\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438\" width=\"3840\" height=\"2880\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d0\/f63\/6de\/6d0f636def9d41f59ed15cce620a9ba8.png\"\/><\/p>\n<div><figcaption>\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u041e\u0445, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u043c\u044b \u0442\u043e\u0433\u0434\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/XPath\">XPath-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439<\/a> \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043d\u0435\u043c\u043e\u044f\u0437\u044b\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u0435 API \u0440\u0430\u0431\u043e\u0442\u044b \u0441 DOM-\u0434\u0435\u0440\u0435\u0432\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/p>\n<\/li>\n<li>\n<p>API \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0418 \u043c\u043d\u043e\u0433\u043e\u0435-\u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0431\u044b \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0430\u0441 \u0436\u0434\u0435\u0442..<\/p>\n<h4>\u042d\u0442\u0430\u043f 2. \u041f\u043e\u0438\u0441\u043a \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432.<\/h4>\n<p>\u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043a \u043d\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u0438 \u043e\u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0437 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u0430. \u041d\u0430\u043b\u043e\u0433\u043e\u0432\u0430\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u0430 \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u043e\u0442\u0447\u0435\u0442\u043e\u0432 (<a href=\"https:\/\/sbis.ru\/help\/ereport\/ni\/uks\">\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0441\u0434\u0435\u043b\u043a\u0430\u0445<\/a>), \u0438 \u043d\u0430\u0448\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0442\u0430\u043b\u0430 \u043f\u0430\u0434\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441\u0442\u0430\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043e\u0442\u0447\u0435\u0442\u044b \u0432 \u0441\u043e\u0442\u043d\u0438 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442. \u0410 \u043e\u043d\u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u043b\u0438\u0441\u044c \u0432 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 (\u0441\u043c. \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0432\u044b\u0448\u0435). \u0418 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0440\u043e\u043d\u044f\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440!<\/p>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u044b\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0441\u043a\u043b\u0435\u0439\u043a\u0443\/\u0440\u0430\u0441\u043a\u043b\u0435\u0439\u043a\u0443 \u0442\u0430\u043a\u0438\u0445 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 (\u0437\u0430 \u0447\u0442\u043e \u0438\u043c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e). \u0410 \u043c\u044b \u0443\u0448\u043b\u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u044b \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u043e. \u041d\u0430\u0442\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/vtd-xml.sourceforge.io\/\">VTD-XML<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0442\u0435\u0441\u0442\u0430\u043c \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0430 \u043d\u0430\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 XPath, \u043c\u0430\u043b\u044b\u0435 \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u043f\u043e \u043f\u0430\u043c\u044f\u0442\u0438), \u043d\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f<a href=\"https:\/\/ru.wikipedia.org\/wiki\/GNU_General_Public_License\"> GPL<\/a> \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u0445.<\/p>\n<p><em>\u0415\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c VTD \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u0448\u043a\u0430\u0444\u0430, \u0442\u043e \u0442\u044b \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e \u0448\u043a\u0430\u0444\u0443 \u0437\u0430\u043f\u0438\u0441\u043a\u0438, \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0448\u044c\u0441\u044f \u0432 \u0432\u0435\u0449\u0430\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u043e\u043a.<\/em><\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 VTD \u0438 DOM-\u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0b8\/218\/0b7\/0b82180b7e71773efc9cdcaf5bff962e.png\" alt=\"\u0412\u0440\u0435\u043c\u044f\" title=\"\u0412\u0440\u0435\u043c\u044f\" width=\"3840\" height=\"2880\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0b8\/218\/0b7\/0b82180b7e71773efc9cdcaf5bff962e.png\"\/><\/p>\n<div><figcaption>\u0412\u0440\u0435\u043c\u044f<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5bf\/b44\/978\/5bfb44978ddfab4f269a9d6dd040b845.png\" alt=\"\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430\" title=\"\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430\" width=\"3840\" height=\"2880\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5bf\/b44\/978\/5bfb44978ddfab4f269a9d6dd040b845.png\"\/><\/p>\n<div><figcaption>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/001\/682\/3d4\/0016823d43f1ffc4bf75bcc070faf78b.png\" alt=\"\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438\" title=\"\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438\" width=\"3840\" height=\"2880\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/001\/682\/3d4\/0016823d43f1ffc4bf75bcc070faf78b.png\"\/><\/p>\n<div><figcaption>\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u043c\u0443, \u0445\u043e\u0442\u044c \u0438 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c \u0443\u0434\u043e\u0431\u043d\u043e\u043c\u0443 \u0434\u043b\u044f \u043d\u0430\u0441 \u0440\u0435\u0448\u0435\u043d\u0438\u044e.<\/p>\n<h4>\u042d\u0442\u0430\u043f 3. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.<\/h4>\n<p>\u041f\u0430\u0440\u0441\u0435\u0440\u044b \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c (\u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u044b\u0435 \u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0435) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0443 \u043d\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430\u044f, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d\u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0435\u0434\u0430\u044e\u0442 \u043f\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430. \u0412 \u0441\u0432\u043e\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u044b\u0439 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/SAX\">SAX<\/a>-\u043f\u0430\u0440\u0441\u0435\u0440. \u0418\u0437 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e &#8212; \u0432 Xerces-C \u043e\u043d \u0443\u0436\u0435 \u0431\u044b\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0418\u0437 \u043f\u043b\u043e\u0445\u043e\u0433\u043e \u0431\u044b\u043b\u043e \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 &#8212; \u043d\u0438 \u043e\u0434\u0438\u043d \u043d\u0430\u0448 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u0442\u043e\u0447\u0435\u043d \u043f\u043e\u0434 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n<p><em>\u0415\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u0448\u043a\u0430\u0444\u0430, \u0442\u043e \u0442\u044b \u0435\u0433\u043e \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0432\u0438\u0434\u0438\u0448\u044c, \u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0448\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u043b\u043a\u0430 \u0437\u0430 \u043f\u043e\u043b\u043a\u043e\u0439, \u043d\u0435 \u0437\u043d\u0430\u044f, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0435\u0449\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.<\/em><\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 DOM \u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a31\/c92\/96b\/a31c9296b43378660627e36320f4dd3f.png\" alt=\"\u0412\u0440\u0435\u043c\u044f\" title=\"\u0412\u0440\u0435\u043c\u044f\" width=\"3840\" height=\"2880\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a31\/c92\/96b\/a31c9296b43378660627e36320f4dd3f.png\"\/><\/p>\n<div><figcaption>\u0412\u0440\u0435\u043c\u044f<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e5a\/3b2\/446\/e5a3b24461e6b2dcb83700cc29eb4c19.png\" alt=\"\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430\" title=\"\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430\" width=\"3840\" height=\"2880\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e5a\/3b2\/446\/e5a3b24461e6b2dcb83700cc29eb4c19.png\"\/><\/p>\n<div><figcaption>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/419\/52c\/163\/41952c163b66eb3c97ea1f75643e68d7.png\" alt=\"\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438\" title=\"\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438\" width=\"3840\" height=\"2880\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/419\/52c\/163\/41952c163b66eb3c97ea1f75643e68d7.png\"\/><\/p>\n<div><figcaption>\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u041e\u0442\u043b\u043e\u0436\u0438\u0432 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0432\u0441\u044e \u043f\u0440\u043e\u0447\u0443\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u043c\u044b \u0437\u0430\u043d\u044f\u043b\u0438\u0441\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043d\u0430 SAX-\u043f\u0430\u0440\u0441\u0435\u0440 \u0432\u0441\u0435\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432. \u041d\u0430\u0448\u0438 \u0446\u0435\u043b\u0438 \u0431\u044b\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b:<\/p>\n<ul>\n<li>\n<p>\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043b\u044e\u0431\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 &#8212; \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0443\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u0438\u043a\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c!<\/p>\n<p>\u041d\u0430\u0448\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442, \u043f\u0435\u0447\u0430\u0442\u0430\u044e\u0442 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442.<\/p>\n<p>\u0413\u0434\u0435-\u0442\u043e \u043c\u044b \u0441\u0442\u0430\u043b\u0438 \u0441\u0430\u043c\u0438 &#171;\u043d\u0430 \u043b\u0435\u0442\u0443&#187; \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u0413\u0434\u0435-\u0442\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043e\u0442 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f XML \u0432\u043e\u0432\u0441\u0435. \u0413\u0434\u0435-\u0442\u043e &#8212; \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043d\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.<\/p>\n<p>\u041c\u044b \u0434\u0430\u0436\u0435 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b XPath-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f SAX&#8217;\u043e\u043c, \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438&#8230;<\/p>\n<h3>\u041c\u0435\u0442\u043e\u0434\u0438\u043a\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439<\/h3>\n<p>\u0412\u044b\u0448\u0435 \u043c\u044b \u043f\u0440\u0438\u0432\u0435\u043b\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432, \u043d\u043e \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u043e \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439. \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445. \u0420\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043e\u0442 1 \u0434\u043e 1000 \u041c\u0431. \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c:<\/p>\n<ol>\n<li>\n<p>\u0412\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b<\/p>\n<\/li>\n<li>\n<p>\u041f\u0438\u043a\u043e\u0432\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"python\">for file_size in &lt;\u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u043e\u0442 1 \u0434\u043e 1000 \u0441 \u0448\u0430\u0433\u043e\u043c 25>: \u00a0 \u00a0 # \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c XML-\u0444\u0430\u0439\u043b \u00a0 \u00a0 for parser in &lt;\u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432>: \u00a0 \u00a0 \u00a0 \u00a0 # \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0430\u0440\u0441\u0435\u0440 \u00a0 \u00a0 \u00a0 \u00a0 # \u0418\u0437\u043c\u0435\u0440\u044f\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u00a0 \u00a0 \u00a0 \u00a0 # \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/code><\/pre>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u043b\u044f \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u0443: \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0432 XML-\u0444\u0430\u0439\u043b\u0435. \u0422\u0430\u043a\u0430\u044f \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0430 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 \u0438 \u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u0441\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0432 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f.<\/p>\n<details class=\"spoiler\">\n<summary>\u0425\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u044b<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">\u041c\u043e\u0434\u0435\u043b\u044c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430: MacBook Air M1 2020 \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440: Apple M1 OS: 13.4.1 (22F82) RAM: 16 Gb SSD: Apple SSD AP0256Q<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0412 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0438 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>xerces-c 3.2.3 (DOM\/SAX)<\/p>\n<\/li>\n<li>\n<p>libxml2 2.9.13 (DOM\/SAX)<\/p>\n<\/li>\n<li>\n<p>pugixml 1.12.1<\/p>\n<\/li>\n<li>\n<p>expat 2.4.7<\/p>\n<\/li>\n<li>\n<p>rapidxml 1.13<\/p>\n<\/li>\n<li>\n<p>vtd-xml 2.12<\/p>\n<\/li>\n<\/ul>\n<h4>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/h4>\n<p>\u041d\u0438\u0436\u0435 \u0432\u044b\u043b\u043e\u0436\u0435\u043d \u043a\u043e\u0434 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 C++.<\/p>\n<details class=\"spoiler\">\n<summary>expat_sax<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;iostream> #include &lt;expat.h>  struct XMLData {     int nodeCount;     int attributeCount; };  void startElement(void* data, const XML_Char* element, const XML_Char** attribute) {     XMLData* xmlData = static_cast&lt;XMLData*>(data);     xmlData->nodeCount++;      for (int i = 0; attribute[i]; i += 2)     {         xmlData->attributeCount++;     } }  int main(int argc, char *args[]) {     \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438     if (argc &lt; 2)     {         std::cerr &lt;&lt; \"You must pass the filename as an argument.\" &lt;&lt; std::endl;         return 2;     }      \/\/ \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0444\u0430\u0439\u043b\u0430     FILE* file = fopen(args[1], \"r\");     if (!file)     {         std::cout &lt;&lt; \"Failed to open file: \" &lt;&lt; args[1] &lt;&lt; std::endl;         return 1;     }      \/\/ \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 Expat     const auto&amp; parser = XML_ParserCreate(NULL);     if (!parser)     {         std::cout &lt;&lt; \"Failed to create XML parser\" &lt;&lt; std::endl;         return 1;     }      XMLData xml_data;     xml_data.nodeCount = 0;     xml_data.attributeCount = 0;     XML_SetUserData(parser, &amp;xml_data);      \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430     XML_SetElementHandler(parser, startElement, nullptr);          char buffer[4096];     int bytes_read;      \/\/ \u0427\u0442\u0435\u043d\u0438\u0435 \u0438 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 XML-\u0444\u0430\u0439\u043b\u0430     while ((bytes_read = fread(buffer, 1, sizeof(buffer), file)) > 0)     {         if (XML_Parse(parser, buffer, bytes_read, feof(file)) == XML_STATUS_ERROR)         {             std::cout &lt;&lt; \"XML parsing error\" &lt;&lt; std::endl;             return 1;         }     }      \/\/ \u0412\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432     std::cout &lt;&lt; xml_data.nodeCount &lt;&lt; std::endl;     std::cout &lt;&lt; xml_data.attributeCount &lt;&lt; std::endl;      \/\/ \u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432     XML_ParserFree(parser);     fclose(file);      return 0; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>libxml2_dom<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;iostream> #include &lt;libxml\/parser.h> #include &lt;libxml\/tree.h>  \/\/ \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 void countNodesAndAttributes(xmlNode* node, int&amp; nodes_count, int&amp; attributes_count) {     if (node->type == XML_ELEMENT_NODE)     {         nodes_count++;         xmlAttr* attribute = node->properties;         while(attribute)         {             attributes_count++;             attribute = attribute->next;         }     }      \/\/ \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043c\u043a\u0430 \u0443\u0437\u043b\u0430     for (xmlNode* child = node->children; child != nullptr; child = child->next)     {         countNodesAndAttributes(child, nodes_count, attributes_count);     } }   int main(int argc, char *args[]) {     \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438     if (argc &lt; 2)     {         std::cerr &lt;&lt; \"You must pass the filename as an argument.\" &lt;&lt; std::endl;         return 2;     }      const char *filename = args[1];     \/\/ \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 XML \u0444\u0430\u0439\u043b\u0430     xmlDoc* doc = xmlReadFile(filename, nullptr, 0);     if (doc == nullptr)     {         std::cout &lt;&lt; \"Failed to parse xml file.\" &lt;&lt; std::endl;         return 1;     }      xmlNode* root = xmlDocGetRootElement(doc);      int num_nodes = 0;     int attributes_count = 0;      \/\/ \u0412\u044b\u0437\u043e\u0432 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432     countNodesAndAttributes(root, num_nodes, attributes_count);      std::cout &lt;&lt; num_nodes &lt;&lt; std::endl;     std::cout &lt;&lt; attributes_count &lt;&lt; std::endl;      \/\/ \u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432     xmlFreeDoc(doc);     xmlCleanupParser();      return 0; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>libxml2_sax<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;iostream> #include &lt;libxml\/tree.h> #include &lt;libxml\/parser.h> #include &lt;libxml\/parserInternals.h>  \/\/ \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 struct CountData {     int nodeCount = 0;     int attributeCount = 0; };  void startElementCallback(void *user_data, const xmlChar *name, const xmlChar **attrs) {     CountData *countData = static_cast&lt;CountData *>(user_data);     countData->nodeCount++;     while (NULL != attrs &amp;&amp; NULL != attrs[0])     {         countData->attributeCount++;         attrs = &amp;attrs[2];     } }  int main(int argc, char *args[]) {     \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438     if (argc &lt; 2)     {         std::cerr &lt;&lt; \"You must pass the filename as an argument.\" &lt;&lt; std::endl;         return 2;     }      xmlSAXHandler sh = {0};      CountData countData;      \/\/ \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430     sh.startElement = startElementCallback;      xmlParserCtxtPtr ctxt;      \/\/ \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430     if ((ctxt = xmlCreateFileParserCtxt(args[1])) == NULL)     {         std::cout &lt;&lt; \"Failed to create XML parser context.\" &lt;&lt; std::endl;         return EXIT_FAILURE;     }      ctxt->sax = &amp;sh;     ctxt->userData = &amp;countData;      \/\/ \u041f\u0430\u0440\u0441\u0438\u043d\u0433 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430     xmlParseDocument(ctxt);     std::cout &lt;&lt; countData.nodeCount &lt;&lt; std::endl;     std::cout &lt;&lt; countData.attributeCount &lt;&lt; std::endl;      return 0; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>pugixml_dom<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;iostream> #include &lt;pugixml.hpp>  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 void countNodesAndAttributes(const pugi::xml_node&amp; node, int&amp; node_count, int&amp; attribute_count) {     \/\/ \u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0443\u0437\u043b\u043e\u0432     node_count++;      const auto&amp; attrs = node.attributes();      \/\/ \u041f\u043e\u0434\u0441\u0447\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432     attribute_count += std::distance(attrs.begin(), attrs.end());      \/\/ \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0443\u0437\u043b\u043e\u0432     for (const auto&amp; child : node.children())     {         if (child.type() == pugi::node_element)         {             countNodesAndAttributes(child, node_count, attribute_count);         }     } };  int main(int argc, char *args[]) {     \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438     if (argc &lt; 2)     {         std::cerr &lt;&lt; \"You must pass the filename as an argument.\" &lt;&lt; std::endl;         return 2;     }          pugi::xml_document doc;     const auto&amp; result = doc.load_file(args[1]);          if (!result)         return 1;          \/\/ \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0443\u0437\u043b\u0430     const auto&amp; root = doc.first_child();      int node_count = 0;     int attribute_count = 0;     \/\/ \u0412\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0443\u0437\u043b\u0430     countNodesAndAttributes(root, node_count, attribute_count);          std::cout &lt;&lt; node_count &lt;&lt; std::endl;     std::cout &lt;&lt; attribute_count &lt;&lt; std::endl;          return 0; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>rapidxml_dom<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;iostream> \/\/ std::cout #include \"rapidxml\/rapidxml.hpp\" \/\/ rapidxml::xml_document, rapidxml::xml_node #include \"rapidxml\/rapidxml_utils.hpp\" \/\/ rapidxml::count_attributes, rapidxml::file  \/\/ \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 void countNodesAndAttributes(rapidxml::xml_node&lt;>* node, int&amp; nodes_count, int&amp; attributes_count) {     ++nodes_count;     attributes_count += rapidxml::count_attributes(node);     for (rapidxml::xml_node&lt;>* child = node->first_node(); child; child = child->next_sibling())     {         if (child->type() == rapidxml::node_element)         {             countNodesAndAttributes(child, nodes_count, attributes_count);         }     } }  int main(int argc, char *args[]) {     \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438     if (argc &lt; 2)     {         std::cerr &lt;&lt; \"You must pass the filename as an argument.\" &lt;&lt; std::endl;         return 2;     }      \/\/ \u0427\u0438\u0442\u0430\u0435\u043c \u0444\u0430\u0439\u043b     rapidxml::file&lt;> xmlFile{args[1]};      \/\/ \u041f\u0430\u0440\u0441\u0438\u043c XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442     rapidxml::xml_document&lt;> doc;     doc.parse&lt;0>(xmlFile.data());      int node_count = 0;     int attribute_count = 0;     countNodesAndAttributes(doc.first_node(), node_count, attribute_count);      std::cout &lt;&lt; node_count &lt;&lt; std::endl;     std::cout &lt;&lt; attribute_count &lt;&lt; std::endl;      return 0; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>vtd-xml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;iostream> #include &lt;fstream> #include \"vtd-xml\/vtdNav.h\" #include \"vtd-xml\/vtdGen.h\" #include \"vtd-xml\/autoPilot.h\"  int main(int argc, char *args[]) {     \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438     if (argc &lt; 2)     {         std::cerr &lt;&lt; \"You must pass the filename as an argument.\" &lt;&lt; std::endl;         return 2;     }      try     {         \/\/ \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c XML-\u0444\u0430\u0439\u043b         std::ifstream xml_file(args[1]);         if (!xml_file.is_open())         {             std::cout &lt;&lt; \"Failed to open file.\" &lt;&lt; std::endl;             return 1;         }                  \/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430         xml_file.seekg(0, std::ios::end);         int file_size = xml_file.tellg();         xml_file.seekg(0, std::ios::beg);                  \/\/ \u0427\u0438\u0442\u0430\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430         char* xml_data = new char[file_size];         xml_file.read(xml_data, file_size);         xml_file.close();                  \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c VTD-XML         com_ximpleware::VTDGen vg;         vg.setDoc(xml_data, file_size);         vg.parse(true);                  \/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c VTD-\u043d\u0430\u0432\u0438\u0433\u0430\u0442\u043e\u0440         const auto&amp; vn = vg.getNav();         com_ximpleware::AutoPilot ap(vn);         ap.selectXPath((com_ximpleware::UCSChar*) L\"\/\/*\"); \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u0441\u0435 \u0443\u0437\u043b\u044b                  \/\/ \u041f\u043e\u0434\u0441\u0447\u0435\u0442 \u0443\u0437\u043b\u043e\u0432         int node_count = 0;         int attr_count = 0;         while(ap.evalXPath() != -1)         {             node_count++;             attr_count += vn->getAttrCount();         }                  std::cout &lt;&lt; node_count &lt;&lt; std::endl;         std::cout &lt;&lt; attr_count &lt;&lt; std::endl;                  \/\/ \u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u044b         delete[] xml_data;     }     catch (com_ximpleware::VTDException&amp; e)     {         std::cerr &lt;&lt; e.what() &lt;&lt; \":\" &lt;&lt; e.getMessage() &lt;&lt; endl;     }          return 0; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>xerces-c_dom<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;iostream> #include &lt;xercesc\/util\/PlatformUtils.hpp> #include &lt;xercesc\/parsers\/XercesDOMParser.hpp> #include &lt;xercesc\/dom\/DOM.hpp>  \/\/ \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0445\u043e\u0434\u0430 DOM-\u0434\u0435\u0440\u0435\u0432\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 void countNodesAndAttributes(const xercesc::DOMNode* node, int&amp; numNodes, int&amp; numAttributes) {     if (node->getNodeType() == xercesc::DOMNode::ELEMENT_NODE)     {         \/\/ \u041f\u043e\u0434\u0441\u0447\u0435\u0442 \u0443\u0437\u043b\u043e\u0432         numNodes++;          \/\/ \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430         const auto&amp; attributes = node->getAttributes();         if (attributes)         {             \/\/ \u041f\u043e\u0434\u0441\u0447\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432             numAttributes += attributes->getLength();         }     }      \/\/ \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u0445\u043e\u0434 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0443\u0437\u043b\u043e\u0432     for (const xercesc::DOMNode* child = node->getFirstChild(); child != nullptr; child = child->getNextSibling())     {         countNodesAndAttributes(child, numNodes, numAttributes);     } }  int main(int argc, char *args[]) {     \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438     if (argc &lt; 2)     {         std::cerr &lt;&lt; \"You must pass the filename as an argument.\" &lt;&lt; std::endl;         return 2;     }      \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f Xerces-C++     xercesc::XMLPlatformUtils::Initialize();      {         \/\/ \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u0430         xercesc::XercesDOMParser parser;         parser.setDoNamespaces(false);         parser.setDoSchema(false);         parser.setValidationScheme(xercesc::XercesDOMParser::Val_Never);          try         {             \/\/ \u041f\u0430\u0440\u0441\u0438\u043d\u0433 \u0444\u0430\u0439\u043b\u0430             parser.parse(args[1]);              \/\/ \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430             const xercesc::DOMDocument* doc = parser.getDocument();             const xercesc::DOMElement* root = doc->getDocumentElement();              \/\/ \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432             int numNodes = 0;             int numAttributes = 0;              \/\/ \u0412\u044b\u0437\u043e\u0432 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0431\u0445\u043e\u0434\u0430 \u0434\u0435\u0440\u0435\u0432\u0430             countNodesAndAttributes(root, numNodes, numAttributes);              \/\/ \u0412\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432             std::cout &lt;&lt; numNodes &lt;&lt; std::endl;             std::cout &lt;&lt; numAttributes &lt;&lt; std::endl;         }         catch (...)         {             std::cerr &lt;&lt; \"Parsing error.\" &lt;&lt; std::endl;             return 1;         }      }      \/\/ \u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b     xercesc::XMLPlatformUtils::Terminate();     return 0; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>xerces-c_sax<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;iostream>  #include &lt;xercesc\/parsers\/SAXParser.hpp> #include &lt;xercesc\/sax\/HandlerBase.hpp> #include &lt;xercesc\/util\/XMLString.hpp> #include &lt;xercesc\/sax\/AttributeList.hpp> #include &lt;xercesc\/sax\/SAXParseException.hpp> #include &lt;xercesc\/sax\/SAXException.hpp>  using namespace xercesc_3_2;  class CounterSaxHandler : public HandlerBase { public:     void startElement(const XMLCh* const, AttributeList&amp; attributes)     {         ++m_nodesCount;         m_attributesCount += attributes.getLength();     }      size_t NodesCount()     {         return m_nodesCount;     }      size_t AttributesCount()     {         return m_attributesCount;     } private:     size_t m_nodesCount = 0;     size_t m_attributesCount = 0; };  int main(int argc, char *args[]) {     \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438     if (argc &lt; 2)     {         std::cerr &lt;&lt; \"You must pass the filename as an argument.\" &lt;&lt; std::endl;         return 2;     }      try     {         XMLPlatformUtils::Initialize();     }     catch (const XMLException&amp; e)     {         char* message = XMLString::transcode(e.getMessage());         std::cout &lt;&lt; \"Error during initialization! : \" &lt;&lt; message &lt;&lt; std::endl;         XMLString::release(&amp;message);         return 1;     }        SAXParser parser;     parser.setDoNamespaces(true);    \/\/ optional      CounterSaxHandler handler;     parser.setDocumentHandler(&amp;handler);     parser.setErrorHandler(&amp;handler);      try     {         parser.parse(args[1]);         std::cout &lt;&lt; handler.NodesCount() &lt;&lt; std::endl;         std::cout &lt;&lt; handler.AttributesCount() &lt;&lt; std::endl;     }     catch (const XMLException&amp; e)     {         char* message = XMLString::transcode(e.getMessage());         std::cout &lt;&lt; \"Exception message is: \" &lt;&lt; message &lt;&lt; std::endl;         XMLString::release(&amp;message);         return -1;     }     catch (const SAXParseException&amp; toCatch)     {         char* message = XMLString::transcode(toCatch.getMessage());         std::cout &lt;&lt; \"Exception message is: \" &lt;&lt; message &lt;&lt; std::endl;         XMLString::release(&amp;message);         return -1;     }     catch (...)     {         std::cout &lt;&lt; \"Unexpected Exception.\" &lt;&lt; std::endl;         return -1;     }      return 0; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h4>\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 XML-\u0444\u0430\u0439\u043b\u043e\u0432<\/h4>\n<p>\u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 Python.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f:<\/p>\n<ul>\n<li>\n<p>\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440  <code>--file_name<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0432 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430\u0445 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>--file_size<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0441\u043e\u0442\u0430 \u0434\u0435\u0440\u0435\u0432\u0430 (\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 <code>HEIGHT<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u0438\u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 (\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b <code>NODE_NAME_LENGTH<\/code> \u0438 <code>ATTRIBUTE_NAME_LENGTH<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e)<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0432 \u0443\u0437\u043b\u0435 (\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 <code>NUM_ATTRIBUTES<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0432 \u0441\u0430\u043c\u043e\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u043c \u0443\u0437\u043b\u0435 (\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 <code>DEEPEST_LEVEL_SIZE<\/code>)<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u043c\u0435\u043d\u0430 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d &#8212; \u0434\u0435\u0440\u0435\u0432\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0417\u0430\u0442\u0435\u043c \u044d\u0442\u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u0434 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">\"\"\"\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 XML-\u0444\u0430\u0439\u043b\u043e\u0432\"\"\" import argparse import os import random import string import xml.etree.ElementTree as ET  # \u0412\u044b\u0441\u043e\u0442\u0430 \u0434\u0435\u0440\u0435\u0432\u0430 HEIGHT = 5 # \u0414\u043b\u0438\u043d\u044b \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 NODE_NAME_LENGTH = 5 ATTRIBUTE_NAME_LENGTH = 3 # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0432 \u0443\u0437\u043b\u0435 NUM_ATTRIBUTES = 2 # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0432 \u0441\u0430\u043c\u043e\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u043c \u0443\u0437\u043b\u0435 DEEPEST_LEVEL_SIZE = 10   def random_string(length):     \"\"\"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b\"\"\"     letters = string.ascii_lowercase     return ''.join(random.choice(letters) for _ in range(length))   def generate_xml_tree(height, node_name_length, attribute_name_length, num_attributes):     \"\"\"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f XML-\u0434\u0435\u0440\u0435\u0432\u0430\"\"\"     if height &lt;= 0:         return None      root = ET.Element(random_string(node_name_length))      for _ in range(num_attributes):         attr_name = random_string(attribute_name_length)         attr_value = random_string(attribute_name_length)         root.set(attr_name, attr_value)      level_size = 1     if height == 2:         level_size = DEEPEST_LEVEL_SIZE     for _ in range(level_size):         child = generate_xml_tree(height - 1, node_name_length, attribute_name_length, num_attributes)         if child is not None:             root.append(child)      return root   if __name__ == '__main__':     parser = argparse.ArgumentParser(description='Fake XML generator')     # \u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b     parser.add_argument('--file_size', type=int, default=1, help='Size of file in megabytes')     parser.add_argument('--file_name', type=str, default='output.xml', help='File name')     args = parser.parse_args()      args.file_size = args.file_size * 1024 * 1024      # \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 xml_str     tree = generate_xml_tree(HEIGHT, NODE_NAME_LENGTH, ATTRIBUTE_NAME_LENGTH, NUM_ATTRIBUTES)     xml_tree = ET.ElementTree(tree)     ET.indent(xml_tree)      xml_str = ET.tostring(tree, encoding='utf8', xml_declaration=False).decode()      # \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u0444\u0430\u0439\u043b     with open(args.file_name, 'w', encoding='utf8') as f:         f.write('&lt;?xml version=\"1.0\"?>')         f.write(os.linesep)         f.write('&lt;root>')         while os.path.getsize(args.file_name) &lt; args.file_size:             f.write(xml_str)             f.write(os.linesep)             f.flush()         f.write('&lt;\/root>')<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h3>\u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432<\/h3>\n<p>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b &#8212; \u0432\u0430\u0436\u043d\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043f\u0430\u0440\u0441\u0435\u0440\u0430 XML, \u043d\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u0438 \u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445. \u041f\u0430\u0440\u0441\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u043c, \u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0442\u043e \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432, \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u0431\u0437\u043e\u0440\u0435.<\/p>\n<h4>DOM \u0438 VTD<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td colspan=\"2\" data-colwidth=\"78,93\" width=\"78\">\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">libxml2<\/p>\n<\/td>\n<td>\n<p align=\"center\">pugixml<\/p>\n<\/td>\n<td>\n<p align=\"center\">rapidxml<\/p>\n<\/td>\n<td>\n<p align=\"center\">vtd-xml<\/p>\n<\/td>\n<td>\n<p align=\"center\">xerces-c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" data-colwidth=\"78,93\" width=\"78\">\n<p align=\"center\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432 \u0438\u043c\u0435\u043d<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<td>\n<p align=\"center\">&#8212;<\/p>\n<\/td>\n<td>\n<p align=\"center\">&#8212;<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" data-colwidth=\"78,93\" width=\"78\">\n<p align=\"center\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 processing instruction<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" data-colwidth=\"78,93\" width=\"78\">\n<p align=\"center\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043e\u043a<\/p>\n<\/td>\n<td>\n<p align=\"center\">UTF-8, UTF-16 (LE\/BE), ISO-8859-1, ASCII, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438  <\/p>\n<\/td>\n<td>\n<p align=\"center\">UTF-8, UTF-16 (LE\/BE), UTF-32 (LE\/BE), ISO-8859-1, ASCII, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438  <\/p>\n<\/td>\n<td>\n<p align=\"center\">UTF-8 <\/p>\n<\/td>\n<td>\n<p align=\"center\">UTF-8, UTF-16 (LE\/BE), ISO-8859-1, ASCII, ISO&#8212;8859-{2-10}, Windows {1250-1258}  <\/p>\n<\/td>\n<td>\n<p align=\"center\">UTF-8, UTF-16 (LE\/BE), ISO-8859-1, ASCII, UCS4BE\/LE, IBM037, IBM1047, IBM1140, Windows-1252, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438  <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" data-colwidth=\"78,93\" width=\"78\">\n<p align=\"center\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 XPath<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<td>\n<p align=\"center\">&#8212;<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4>\u041f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b<\/h4>\n<p>Expat, Xerces-C \u0438 libxml2 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0441\u0445\u043e\u0436\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043e\u0442\u043b\u0438\u0447\u0430\u044f\u0441\u044c \u043b\u0438\u0448\u044c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td colspan=\"2\" data-colwidth=\"78,93\" width=\"78\"><\/td>\n<td>\n<p align=\"center\">libxml2<\/p>\n<\/td>\n<td>\n<p align=\"center\">expat<\/p>\n<\/td>\n<td>\n<p align=\"center\">xerces-c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" data-colwidth=\"78,93\" width=\"78\">\n<p align=\"center\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432 \u0438\u043c\u0435\u043d<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" data-colwidth=\"78,93\" width=\"78\">\n<p align=\"center\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 processing instruction<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<td>\n<p align=\"center\">+<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" data-colwidth=\"78,93\" width=\"78\">\n<p align=\"center\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043e\u043a<\/p>\n<\/td>\n<td>\n<p align=\"center\">UTF-8, UTF-16 (LE\/BE), ISO-8859-1, ASCII, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438  <\/p>\n<\/td>\n<td>\n<p align=\"center\">UTF-8, UTF-16 (LE\/BE), ISO-8859-1, ASCII, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438<\/p>\n<\/td>\n<td>\n<p align=\"center\">UTF-8, UTF-16 (LE\/BE), ISO-8859-1, ASCII, UCS4BE\/LE, IBM037, IBM1047, IBM1140, Windows-1252, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438  <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" data-colwidth=\"78,93\" width=\"78\">\n<p align=\"center\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 XPath<\/p>\n<\/td>\n<td>\n<p align=\"center\">&#8212;<\/p>\n<\/td>\n<td>\n<p align=\"center\">&#8212;<\/p>\n<\/td>\n<td>\n<p align=\"center\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>\u0412\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0437\u0430\u043c\u0435\u0440\u043e\u0432. \u041d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u041c\u044b \u0436\u0435 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u0430\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0449\u0438\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435: <\/p>\n<ul>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0432\u0430\u0448\u0438\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c. \u041d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f, \u0438 \u044d\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b.<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0449\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0439\u0442\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u043e\u0442 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u0432 \u0438 \u043e\u0431\u043a\u0430\u0442\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0431\u043e\u0442\u044c\u0442\u0435\u0441\u044c \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u043c \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041f\u0438\u0448\u0438\u0442\u0435 \u0442\u0435\u0441\u0442\u044b \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0439\u0442\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043c\u044b \u043d\u0430\u0448\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0435\u0432\u043d\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 legacy-\u043a\u043e\u0434\u0435, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0438\u0441\u044c.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/companies\/tensor\/articles\/769722\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0412 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435, \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u043f\u0440\u043e\u0441. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 XML \u0432 \u0441\u0432\u043e\u0438\u0445 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u0445. \u041d\u0443\u0436\u043d\u043e \u043b\u0438 \u0432\u0430\u043c \u0438\u043b\u0438 \u0432\u0430\u0448\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">52.38% <\/span><span class=\"tm-article-poll__answer-label\">\u0414\u0430, \u043c\u043d\u0435 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e.<\/span><span class=\"tm-article-poll__answer-votes\">22<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 52.38%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">23.81% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435\u0442, \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0441 XML \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435.<\/span><span class=\"tm-article-poll__answer-votes\">10<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 23.81%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">23.81% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435\/\u043f\u0440\u043e\u0447\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e?<\/span><span class=\"tm-article-poll__answer-votes\">10<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 23.81%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 42 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.    \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 11 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/div>\n<p> \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\/769722\/\"> https:\/\/habr.com\/ru\/articles\/769722\/<\/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<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/XML\">XML<\/a>. \u042d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u043e\u0448\u0435\u043b \u0432 \u043d\u0430\u0448\u0443 \u0436\u0438\u0437\u043d\u044c, \u0447\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043d \u0441\u0430\u043c \u0438\u043b\u0438 \u0435\u0433\u043e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430. \u0420\u0430\u0437\u0431\u043e\u0440 XML &#8212; \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0438\u043f\u043e\u0432\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043d\u043e \u0434\u0430\u0436\u0435 \u0432 \u043d\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0430\u0440\u0441\u0438\u0442\u044c XML, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043c\u044b \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043d\u0430 C++.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h2>\u041e \u043d\u0430\u0441<\/h2>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 &#8212; \u044d\u0442\u043e <strong>Saby<\/strong>, \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0431\u0438\u0437\u043d\u0435\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0438 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0441 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u043c\u0438, \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u0440\u0433\u0430\u043d\u0430\u043c\u0438 \u0438 \u043e\u0431\u044b\u043a\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043b\u044e\u0434\u044c\u043c\u0438.<\/p>\n<p>XML-\u0444\u0430\u0439\u043b\u044b &#8212; \u043e\u0434\u0438\u043d \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0418\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u0432 \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u0440\u0433\u0430\u043d\u044b, \u043e\u0431\u043c\u0435\u043d \u0441\u043a\u043b\u0430\u0434\u0441\u043a\u0438\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0440\u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043e\u0431\u043e\u0440\u043e\u0442 \u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0415\u0449\u0435 \u043d\u0430 \u0437\u0430\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043d\u0443\u0436\u043d\u044b \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p><strong>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440<\/strong> &#8212; \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0435\u0447\u0430\u0442\u044c<\/strong> &#8212; \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0431\u0443\u043c\u0430\u0436\u043d\u044b\u0445 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/strong> &#8212; \u0434\u043b\u044f \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/strong> &#8212; \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c\u043e \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 &#8212; \u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u043e\u0432, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432, \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u043e\u0432. \u0417\u0430\u0442\u043e \u0438\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/XML_Schema_(W3C)\">XML-\u0441\u0445\u0435\u043c<\/a>.<\/p>\n<p>\u0422\u0430\u043a \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 <strong>\u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/strong>.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0422\u0430\u043a\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0437\u0433\u043b\u044f\u0434\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0441\u0447\u0435\u0442-\u0444\u0430\u043a\u0442\u0443\u0440\u0443<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u0432\u0441\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f.<\/p>\n<p><strong>\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439<\/strong> \u043c\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u041d\u0414 \u043f\u043e \u041d\u0414\u0421, \u0441\u0447\u0435\u0442-\u0444\u0430\u043a\u0442\u0443\u0440\u0430 \u0438 \u0442.\u0434.) \u0432 \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0447\u0430\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 (\u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438).<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 (\u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438).<\/p>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043c\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438).<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0424\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442<\/strong> &#8212; \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 XML. \u041f\u0440\u043e\u0441\u0442\u043e \u0438 \u0441\u043e \u0432\u043a\u0443\u0441\u043e\u043c.<\/figcaption><\/div>\n<\/figure>\n<p>\u0424\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e XML. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0444\u0430\u0439\u043b\u043e\u0432 (<a href=\"https:\/\/ru.wikipedia.org\/wiki\/JSON\">JSON<\/a>, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%84%D0%B0%D0%B9%D0%BB\">TXT <\/a>\u0438 \u0442.\u0434.). \u041d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u043d\u0430 \u043f\u0430\u0440\u0441\u0435\u0440\u0430\u0445 XML \u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u0445.<\/p>\n<h2>\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 XML \u0432 Saby<\/h2>\n<h4>\u041e\u0431\u0449\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/h4>\n<p>\u041b\u044e\u0431\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041d\u043e \u0435\u0441\u043b\u0438 \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0432\u0441\u0435 \u043e\u0431\u0435\u0440\u0442\u043a\u0438, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0447\u0443\u044e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443, \u0442\u043e \u0432\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0432\u0435\u0441\u0442\u0438 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u044d\u0442\u0430\u043f\u0430\u043c:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u041d\u0414\u0421 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0438\u043b\u0438 \u0441\u0447\u0435\u0442-\u0444\u0430\u043a\u0442\u0443\u0440\u0430)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p>\u041f\u0430\u0440\u0441\u0438\u043d\u0433 \u0444\u0430\u0439\u043b\u0430 \u0438 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u0430<\/p>\n<\/li>\n<\/ol>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0444\u0430\u0439\u043b\u0430 \u0438 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443.<\/p>\n<h4>\u042d\u0442\u0430\u043f 1. \u041d\u0430\u0447\u0430\u043b\u043e.<\/h4>\n<p>\u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0431\u044b\u043b\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435, \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u043b\u0435\u043a\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0437\u0430\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043c\u044b \u043d\u0435 \u0443\u043c\u0435\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Document_Object_Model\">DOM-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/a>. \u041e\u043d\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c XML-\u0434\u0435\u0440\u0435\u0432\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0441\u0435\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<\/li>\n<\/ul>\n<p><em>\u0415\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u0431\u043e\u0440 XML \u0447\u0435\u0440\u0435\u0437 DOM-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u0448\u043a\u0430\u0444\u0430, \u0442\u043e \u0442\u044b \u0443\u0436\u0435 \u0432\u044b\u0442\u0430\u0449\u0438\u043b \u0432\u0441\u0435 \u0432\u0435\u0449\u0438 \u0438\u0437 \u0448\u043a\u0430\u0444\u0430, \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b, \u0433\u0434\u0435 \u0438 \u0447\u0442\u043e \u043b\u0435\u0436\u0438\u0442, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043d\u0438\u043c\u0438 \u0442\u043e, \u0447\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e.<\/em><\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u0430 <a href=\"https:\/\/xerces.apache.org\/xerces-c\/\">Xerces-C<\/a>, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 API \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 XML. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/pugixml.org\/\">PugiXml<\/a>, \u043d\u043e \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c \u0440\u0430\u0434\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 DOM-\u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u0440\u0435\u043c\u044f<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u041e\u0445, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u043c\u044b \u0442\u043e\u0433\u0434\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/XPath\">XPath-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439<\/a> \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043d\u0435\u043c\u043e\u044f\u0437\u044b\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u0435 API \u0440\u0430\u0431\u043e\u0442\u044b \u0441 DOM-\u0434\u0435\u0440\u0435\u0432\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/p>\n<\/li>\n<li>\n<p>API \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0418 \u043c\u043d\u043e\u0433\u043e\u0435-\u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0431\u044b \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0430\u0441 \u0436\u0434\u0435\u0442..<\/p>\n<h4>\u042d\u0442\u0430\u043f 2. \u041f\u043e\u0438\u0441\u043a \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432.<\/h4>\n<p>\u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043a \u043d\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u0438 \u043e\u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0437 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u0430. \u041d\u0430\u043b\u043e\u0433\u043e\u0432\u0430\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u0430 \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u043e\u0442\u0447\u0435\u0442\u043e\u0432 (<a href=\"https:\/\/sbis.ru\/help\/ereport\/ni\/uks\">\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0441\u0434\u0435\u043b\u043a\u0430\u0445<\/a>), \u0438 \u043d\u0430\u0448\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0442\u0430\u043b\u0430 \u043f\u0430\u0434\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441\u0442\u0430\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043e\u0442\u0447\u0435\u0442\u044b \u0432 \u0441\u043e\u0442\u043d\u0438 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442. \u0410 \u043e\u043d\u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u043b\u0438\u0441\u044c \u0432 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 (\u0441\u043c. \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0432\u044b\u0448\u0435). \u0418 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0440\u043e\u043d\u044f\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440!<\/p>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u044b\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0441\u043a\u043b\u0435\u0439\u043a\u0443\/\u0440\u0430\u0441\u043a\u043b\u0435\u0439\u043a\u0443 \u0442\u0430\u043a\u0438\u0445 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 (\u0437\u0430 \u0447\u0442\u043e \u0438\u043c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e). \u0410 \u043c\u044b \u0443\u0448\u043b\u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u044b \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u043e. \u041d\u0430\u0442\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/vtd-xml.sourceforge.io\/\">VTD-XML<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0442\u0435\u0441\u0442\u0430\u043c \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0430 \u043d\u0430\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 XPath, \u043c\u0430\u043b\u044b\u0435 \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u043f\u043e \u043f\u0430\u043c\u044f\u0442\u0438), \u043d\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f<a href=\"https:\/\/ru.wikipedia.org\/wiki\/GNU_General_Public_License\"> GPL<\/a> \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u0445.<\/p>\n<p><em>\u0415\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c VTD \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u0448\u043a\u0430\u0444\u0430, \u0442\u043e \u0442\u044b \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e \u0448\u043a\u0430\u0444\u0443 \u0437\u0430\u043f\u0438\u0441\u043a\u0438, \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0448\u044c\u0441\u044f \u0432 \u0432\u0435\u0449\u0430\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u043e\u043a.<\/em><\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 VTD \u0438 DOM-\u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u0440\u0435\u043c\u044f<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u043c\u0443, \u0445\u043e\u0442\u044c \u0438 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c \u0443\u0434\u043e\u0431\u043d\u043e\u043c\u0443 \u0434\u043b\u044f \u043d\u0430\u0441 \u0440\u0435\u0448\u0435\u043d\u0438\u044e.<\/p>\n<h4>\u042d\u0442\u0430\u043f 3. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.<\/h4>\n<p>\u041f\u0430\u0440\u0441\u0435\u0440\u044b \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c (\u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u044b\u0435 \u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0435) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0443 \u043d\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430\u044f, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d\u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0435\u0434\u0430\u044e\u0442 \u043f\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430. \u0412 \u0441\u0432\u043e\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u044b\u0439 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/SAX\">SAX<\/a>-\u043f\u0430\u0440\u0441\u0435\u0440. \u0418\u0437 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e &#8212; \u0432 Xerces-C \u043e\u043d \u0443\u0436\u0435 \u0431\u044b\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0418\u0437 \u043f\u043b\u043e\u0445\u043e\u0433\u043e \u0431\u044b\u043b\u043e \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 &#8212; \u043d\u0438 \u043e\u0434\u0438\u043d \u043d\u0430\u0448 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u0442\u043e\u0447\u0435\u043d \u043f\u043e\u0434 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n<p><em>\u0415\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u0448\u043a\u0430\u0444\u0430, \u0442\u043e \u0442\u044b \u0435\u0433\u043e \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0432\u0438\u0434\u0438\u0448\u044c, \u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0448\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u043b\u043a\u0430 \u0437\u0430 \u043f\u043e\u043b\u043a\u043e\u0439, \u043d\u0435 \u0437\u043d\u0430\u044f, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0435\u0449\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.<\/em><\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 DOM \u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u0440\u0435\u043c\u044f<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u041e\u0442\u043b\u043e\u0436\u0438\u0432 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0432\u0441\u044e \u043f\u0440\u043e\u0447\u0443\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u043c\u044b \u0437\u0430\u043d\u044f\u043b\u0438\u0441\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043d\u0430 SAX-\u043f\u0430\u0440\u0441\u0435\u0440 \u0432\u0441\u0435\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432. \u041d\u0430\u0448\u0438 \u0446\u0435\u043b\u0438 \u0431\u044b\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b:<\/p>\n<ul>\n<li>\n<p>\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043b\u044e\u0431\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 &#8212; \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0443\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u0438\u043a\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c!<\/p>\n<p>\u041d\u0430\u0448\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442, \u043f\u0435\u0447\u0430\u0442\u0430\u044e\u0442 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442.<\/p>\n<p>\u0413\u0434\u0435-\u0442\u043e \u043c\u044b \u0441\u0442\u0430\u043b\u0438 \u0441\u0430\u043c\u0438 &#171;\u043d\u0430 \u043b\u0435\u0442\u0443&#187; \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u0413\u0434\u0435-\u0442\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043e\u0442 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f XML \u0432\u043e\u0432\u0441\u0435. \u0413\u0434\u0435-\u0442\u043e &#8212; \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043d\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.<\/p>\n<p>\u041c\u044b \u0434\u0430\u0436\u0435 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b XPath-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f SAX&#8217;\u043e\u043c, \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438&#8230;<\/p>\n<h3>\u041c\u0435\u0442\u043e\u0434\u0438\u043a\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439<\/h3>\n<p>\u0412\u044b\u0448\u0435 \u043c\u044b \u043f\u0440\u0438\u0432\u0435\u043b\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432, \u043d\u043e \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u043e \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439. \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445. \u0420\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043e\u0442 1 \u0434\u043e 1000 \u041c\u0431. \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c:<\/p>\n<ol>\n<li>\n<p>\u0412\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b<\/p>\n<\/li>\n<li>\n<p>\u041f\u0438\u043a\u043e\u0432\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"python\">for file_size in &lt;\u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u043e\u0442 1 \u0434\u043e 1000 \u0441 \u0448\u0430\u0433\u043e\u043c 25>: \u00a0 \u00a0 # \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c XML-\u0444\u0430\u0439\u043b \u00a0 \u00a0 for parser in &lt;\u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432>: \u00a0 \u00a0 \u00a0 \u00a0 # \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0430\u0440\u0441\u0435\u0440 \u00a0 \u00a0 \u00a0 \u00a0 # \u0418\u0437\u043c\u0435\u0440\u044f\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u00a0 \u00a0 \u00a0 \u00a0 # \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/code><\/pre>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u043b\u044f \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u0443: \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0437\u043b\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0432 XML-\u0444\u0430\u0439\u043b\u0435. \u0422\u0430\u043a\u0430\u044f \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0430 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 \u0438 \u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u0441\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0432 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f.<\/p>\n<details class=\"spoiler\">\n<summary>\u0425\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u044b<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">\u041c\u043e\u0434\u0435\u043b\u044c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430: MacBook Air M1 2020 \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440: Apple M1 OS: 13.4.1 (22F82) RAM: 16 Gb SSD: Apple SSD AP0256Q<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0412 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0438 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>xerces-c 3.2.3 (DOM\/SAX)<\/p>\n<\/li>\n<li>\n<p>libxml2 2.9.13 (DOM\/SAX)<\/p>\n<\/li>\n<li>\n<p>pugixml 1.12.1<\/p>\n<\/li>\n<li>\n<p>expat 2.4.7<\/p>\n<\/li>\n<li>\n<p>rapidxml 1.13<\/p>\n<\/li>\n<li>\n<p>vtd-xml 2.12<\/p>\n<\/li>\n<\/ul>\n<h4>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/h4>\n<p>\u041d\u0438\u0436\u0435 \u0432\u044b\u043b\u043e\u0436\u0435\u043d \u043a\u043e\u0434 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 C++.<\/p>\n<details class=\"spoiler\">\n<summary>expat_sax<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;iostream> #include &lt;expat.h>  struct XMLData {     int nodeCount;     int attributeCount; };  void startElement(void* data, const XML_Char* element, const XML_Char** attribute) {     XMLData* xmlData = static_cast&lt;XMLData*>(data);     xmlData->nodeCount++;      for (int i = 0; attribute[i]; i += 2)     {         xmlData->attributeCount++;     } }  int main(int argc, char *args[]) {     \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438     if (argc &lt; 2)     {         std::cerr &lt;&lt; \"You must pass the filename as an argument.\" &lt;&lt; std::endl;         return 2;     }      \/\/ \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0444\u0430\u0439\u043b\u0430     FILE* file = fopen(args[1], \"r\");     if (!file)     {         std::cout &lt;&lt; \"Failed to open file: \" &lt;&lt; args[1] &lt;&lt; std::endl;         return 1;     }      \/\/ \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 Expat     const auto&amp; parser = XML_ParserCreate(NULL);     if (!parser)     {         std::cout &lt;&lt; \"Failed to create XML parser\" &lt;&lt; std::endl;         return 1;     }      XMLData xml_data;     xml_data.nodeCount = 0;     xml_data.attributeCount = 0;     XML_SetUserData(parser, &amp;xml_data);      \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430     XML_SetElementHandler(parser, startElement, nullptr);          char buffer[4096];     int bytes_read;      \/\/ \u0427\u0442\u0435\u043d\u0438\u0435 \u0438 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 XML-\u0444\u0430\u0439\u043b\u0430     while ((bytes_read = fread(buffer, 1, sizeof(buffer), file)) > 0)     {         if (XML_Parse(parser, buffer, bytes_read, feof(file)) == XML_STATUS_ERROR)         {             std::cout &lt;&lt; \"XML parsing error\" &lt;&lt; std::endl;             return 1;         }     }      \/\/ \u0412\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432     std::cout &lt;&lt; xml_data.nodeCount &lt;&lt; std::endl;     std::cout &lt;&lt; xml_data.attributeCount &lt;&lt; std::endl;      \/\/ \u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432     XML_ParserFree(parser);     fclose(file);      return 0; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>libxml2_dom<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;iostream> #include &lt;libxml\/parser.h> #include &lt;libxml\/tree.h>  \/\/ \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f<\/code><\/pre>\n<\/div>\n<\/details>\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-358422","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/358422","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=358422"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/358422\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=358422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=358422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=358422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}