2016-10-26 2 views
0

Есть ли хороший способ canonicalize XML с MSXML6?MSXML и cannonical XML

У меня есть документ XML, который я загружаю в объект IXMLDOMDocument. Мне нужно выполнить операцию, такую ​​как пение или хеширование документа. Я хотел бы поместить его в XML-каноническую форму a la C14N или аналогичный стандарт. IXMLDOMDocument имеет метод сохранения в файл, но я не думаю, что он сначала канонизирует его, и он действительно не предоставляет никаких ручек, чтобы контролировать, как он записывает файл. Существует MXXMLWriter60, который позволяет вам контролировать некоторые вещи, такие как отступ, формат кодировки и т. Д., Но похоже, что у него нет всего, чтобы сделать полный стандарт C14N. Структура .net имеет XmlDsigC14NTransform, которая кажется идеей, но, очевидно, не пригодна для использования там, где я находится в стеке. Похоже, что MSXML имеет некоторую поддержку XMLDSIG, поэтому код должен канонизировать материал, но он не раскрывает ничего подобного.

Любые предложения?

+0

Насколько я могу судить, XMLDSIG был реализован в MSXML 5.0 для MS Office, но не в MSXML 3.0, 4.0 или 6.0. Так что добро пожаловать в мой мир: Microsoft реализует вещи в .Net или в офисе, а не на уровне платформы, оставляя огромное количество разработчиков на своих устройствах. Я предполагаю, что то, что происходит, когда группам разрешено записывать ресурсы компании в своих собственных маленьких мирах. Акционеры должны быть яркими, уверены пользователи. – Bob77

+0

Я не уверен, что вы имеете в виду. Вы можете кодировать библиотеку MSXML3/6 на уровне платформы на любом SKU Windows, даже Mobile, IoT core, desktop и т. Д., Если вы пишете собственный код. В конце концов, это просто COM. DLL находятся в системе32 FWIW. –

+0

В любом случае, это не похоже на хороший API в MSXML для canonicalize. Очевидно, что он может и canonicalize как часть XMLDISG, но он не отображается. Гипотетически, если бы у кого-то был доступ к исходному коду для базового объекта disig, нетрудно было бы предоставить ему новый интерфейс, предоставляющий частные методы canonicalize. –

ответ

0

Короткий ответ - нет, MSXML 6.0 не имеет cannonicalizer, который вы можете использовать. Если существуют старые версии MSXML с канонизаторами, они не включены в современные Windows.

Windows делает компонентами входящих почтовых ящиков, которые могут канонизировать XML по стандарту c14n и многим другим; однако они не подвергаются никаким общедоступным API.

Надеюсь, это поможет!

Смежные вопросы