<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://miac.volmed.org.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%28%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_XML_%D0%BA_%D0%BA%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D1%84%D0%BE%D1%80%D0%BC%D0%B5%29</id>
	<title>Каноникализация (приведение XML к канонической форме) - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://miac.volmed.org.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%28%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_XML_%D0%BA_%D0%BA%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D1%84%D0%BE%D1%80%D0%BC%D0%B5%29"/>
	<link rel="alternate" type="text/html" href="https://miac.volmed.org.ru/wiki/index.php?title=%D0%9A%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_XML_%D0%BA_%D0%BA%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D1%84%D0%BE%D1%80%D0%BC%D0%B5)&amp;action=history"/>
	<updated>2026-04-11T13:34:22Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://miac.volmed.org.ru/wiki/index.php?title=%D0%9A%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_XML_%D0%BA_%D0%BA%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D1%84%D0%BE%D1%80%D0%BC%D0%B5)&amp;diff=3580&amp;oldid=prev</id>
		<title>Dmitriy: Новая страница: «ClincalDocument &lt;pre&gt;static void hash_from_file_ClinicalDocument(string _filenameXML, string _filenameTXT)         {             StreamWriter sw = new StreamWrite…»</title>
		<link rel="alternate" type="text/html" href="https://miac.volmed.org.ru/wiki/index.php?title=%D0%9A%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_XML_%D0%BA_%D0%BA%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D1%84%D0%BE%D1%80%D0%BC%D0%B5)&amp;diff=3580&amp;oldid=prev"/>
		<updated>2015-05-06T07:13:14Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «ClincalDocument &amp;lt;pre&amp;gt;static void hash_from_file_ClinicalDocument(string _filenameXML, string _filenameTXT)         {             StreamWriter sw = new StreamWrite…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;ClincalDocument&lt;br /&gt;
&amp;lt;pre&amp;gt;static void hash_from_file_ClinicalDocument(string _filenameXML, string _filenameTXT)&lt;br /&gt;
        {&lt;br /&gt;
            StreamWriter sw = new StreamWriter(_filenameTXT);&lt;br /&gt;
            Gost3411 gost3411 = new Gost3411CryptoServiceProvider();&lt;br /&gt;
            XmlDocument doc = new XmlDocument();&lt;br /&gt;
            doc.Load(new XmlTextReader(_filenameXML));&lt;br /&gt;
            XmlElement root = doc.DocumentElement;                      // Полный xml файл&lt;br /&gt;
            //            Console.WriteLine(root.InnerXml); Console.ReadKey();&lt;br /&gt;
            // Ищем тег Body, с нэмспейсом&lt;br /&gt;
            String ClinicalDocumentXML = root.OuterXml;        // Получаем полное содержимое тега ClinicalDocument&lt;br /&gt;
            sw.Write(&amp;quot;ClinicalDocumentFromFile=      &amp;quot;); sw.WriteLine(ClinicalDocumentXML); // Пишем исходное body в файл&lt;br /&gt;
            byte[] result = gost3411.ComputeHash(Encoding.UTF8.GetBytes(ClinicalDocumentXML));&lt;br /&gt;
            sw.Write(&amp;quot;HashClinicalDocument=          &amp;quot;); sw.WriteLine(Convert.ToBase64String(result)); // Пишем хэш исходного body&lt;br /&gt;
            // Приводим тэг ClinicalDocument  к канонической форме&lt;br /&gt;
            XmlNode ClinicalDocumentAll = doc.DocumentElement;&lt;br /&gt;
//            sw.Write(&amp;quot;ClinicalDocumentAll=           &amp;quot;); sw.WriteLine(ClinicalDocumentAll.OuterXml);&lt;br /&gt;
            String ClinicalDocumentCan = Canonicalization(ClinicalDocumentAll);&lt;br /&gt;
            sw.Write(&amp;quot;ClinicalDocumentCan=           &amp;quot;); sw.WriteLine(ClinicalDocumentCan);&lt;br /&gt;
            result = gost3411.ComputeHash(Encoding.UTF8.GetBytes(ClinicalDocumentCan));&lt;br /&gt;
            sw.Write(&amp;quot;HashClinicalDocumentCan=       &amp;quot;); sw.WriteLine(Convert.ToBase64String(result));&lt;br /&gt;
            export_can_node(ClinicalDocumentCan, &amp;quot;doc/ClinicalDocument_cann&amp;quot;);   // экспорт результата каноникализации в файл&lt;br /&gt;
            sw.WriteLine(&amp;quot;********************************&amp;quot;);&lt;br /&gt;
            //            Console.WriteLine(signedInfo.InnerXml); Console.ReadKey();&lt;br /&gt;
            sw.Close();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;        public static string Canonicalization(XmlNode node)&lt;br /&gt;
        {&lt;br /&gt;
            var nodeStream = new MemoryStream();&lt;br /&gt;
            XmlWriter writer = XmlWriter.Create(nodeStream);&lt;br /&gt;
            node.WriteTo(writer);&lt;br /&gt;
            writer.Flush();&lt;br /&gt;
&lt;br /&gt;
            nodeStream.Position = 0;&lt;br /&gt;
&lt;br /&gt;
            var transform = new XmlDsigExcC14NTransform();&lt;br /&gt;
            transform.LoadInput(nodeStream);&lt;br /&gt;
&lt;br /&gt;
            var outputStream = (MemoryStream)transform.GetOutput(typeof(Stream));&lt;br /&gt;
            return new StreamReader(outputStream).ReadToEnd();&lt;br /&gt;
&lt;br /&gt;
            //C# метод канокализации не добавляет в XPath неймсппейс&lt;br /&gt;
            // result = s.Replace(&amp;quot;&amp;lt;XPath&amp;gt;&amp;quot;, &amp;quot;&amp;lt;XPath xmlns:dsig=\&amp;quot;http://www.w3.org/2000/09/xmldsig#\&amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;
            //todo: Поверить после! Тут они не попадаются, проверить нечем. &lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;        public static string export_can_node(string node_can, string filename_can)&lt;br /&gt;
        {&lt;br /&gt;
            XmlDocument doc_ = new XmlDocument();&lt;br /&gt;
            doc_.LoadXml(node_can);&lt;br /&gt;
            using (XmlTextWriter xmltw = new XmlTextWriter(filename_can+&amp;quot;.xml&amp;quot;,&lt;br /&gt;
                new UTF8Encoding(false)))&lt;br /&gt;
            {&lt;br /&gt;
                doc_.WriteTo(xmltw);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
                return null;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dmitriy</name></author>
	</entry>
</feed>