Загрузка Xml из файла или строки кодирует одинарные кавычки
В настоящее время у меня есть проблема с загрузкой строк xml (также проверенных с загрузкой файлов) в chilkat. Проблема заключается в загрузке XML-строки, которая содержит одинарные кавычки в некоторых атрибутах. Chilkat автоматически HTML кодирует их.
Например, когда я загружаю следующую строку:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<ds:Reference URI="#xpointer(//*[@authenticate='true'])" />
</root>
Chilkat возвращает это при использовании.GetXml():
<?xml version="1.0" encoding="UTF-8"?>
<root>
<ds:Reference URI="#xpointer(//*[@authenticate='true'])" />
</root>
Поэтому, когда мне нужно сравнить значения дайджеста, они больше не совпадают.
Я мог бы сделать обходной путь, который просто заменит эти ценности, но я не доволен этим. Возможно, есть больше кодировок атрибутов или других значений, которые могут создать больше проблем.
Кто-нибудь знает, если это специально и почему, или просто ошибка. Есть ли свойства, которые я должен установить, и я не нашел?
Спасибо
1 ответ
Это предполагаемое поведение. (Это и сущность HTML, и специальный символ XML. См. http://xml.silmaril.ie/specials.html) Это технически неверно, но я могу понять, почему одно поведение может быть желательным по сравнению с другим.
В любом случае, если вы хэшируете XML и сравниваете его с оригиналом, вы действительно не хотите загружать XML и переизлучать из анализатора стиля DOM. Пробелы, отступы и другие специальные символы XML могут отличаться. Если вы действительно хотите сравнить хэши, вам нужен XML, чтобы быть точным - и это означало бы канонизацию. Вы можете использовать Chilkat для канонизации XML. Например, скопируйте XML в этот онлайн-инструмент, чтобы сгенерировать как канонизированный XML, так и код для канонизации.