Имя: Пароль:
1C
1С v8
КаноническаяЗаписьXML теряет атрибуты xmlns
0 tufffta
 
06.02.15
14:35
У меня метод Канонизировать (КаноническийDOM) и КаноническаяЗаписьXML работает неправильно: в результате декларации пространств имен возвращаются записаны без самих атрибутов "xmlns".

Пример результата:
<SignedProperties ="http://uri.etsi.org/01903/v1.3.2#"; :xsi="http://www.w3.org/2001/XMLSchema-instance"; Id="SignedPropertiesElem_0">
                <SignedSignatureProperties>
                    <SigningTime>2015-01-26T13:25:56Z</SigningTime>
                    <SigningCertificate>
                        <Cert>
                            <CertDigest>
                                <DigestMethod ="http://www.w3.org/2000/09/xmldsig#"; Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>;
                                <DigestValue ="http://www.w3.org/2000/09/xmldsig#">JQ0kZvd0mtXQPA/RTuYV9iuc346tznvN9MoAd/0jNyM=</DigestValue>;
                            </CertDigest>


Вот декларации пространств имен:

="http://uri.etsi.org/01903/v1.3.2#";
:xsi="http://www.w3.org/2001/XMLSchema-instance";

Потом при читании такого файла таже самая 1С дает ошибки.

А вот как я каноникализую:

canonical = new КаноническийDOM;
КаноническаяЗаписьXML = new КаноническаяЗаписьXML;
        КаноническаяЗаписьXML.ОткрытьФайл("\\ESBSERVER\Andriaus_Darbine\temp.xml", ТипКаноническогоXML.КаноническийXML);
canonical.Канонизировать(RefTarget, КаноническаяЗаписьXML);
КаноническаяЗаписьXML.Закрыть();

То же самое и стаким алгоритмом без Канонический.DOMКанонизировать:

ЧтениеXML= new ЧтениеXML;
ЧтениеXML("c:\signatures0.xml");
ReadXML.ИгнорироватьПробелы = Ложь;

ЗаписьXML = Новый КаноническаяЗаписьXML;
ЗаписьXML.УстановитьСтроку(ТипКаноническогоXML.КаноническийXML);
    
Пока ЧтениеXML.Прочитать() Цикл
    ЗаписьXML.ЗаписатьТекущий(ЧтениеXML);
КонецЦикла;
ЧтениеXML.Закрыть();
    
CanonicalXML = ЗаписьXML.Закрыть();

Версия платвормы: 8.3.5.1443 и 8.3.4.482

Может кто-нибудь знает что делать чтобы метод неудалял "xmlns"?