Загрузка 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=&apos;true&apos;])" />
</root>

Поэтому, когда мне нужно сравнить значения дайджеста, они больше не совпадают.

Я мог бы сделать обходной путь, который просто заменит эти ценности, но я не доволен этим. Возможно, есть больше кодировок атрибутов или других значений, которые могут создать больше проблем.

Кто-нибудь знает, если это специально и почему, или просто ошибка. Есть ли свойства, которые я должен установить, и я не нашел?

Спасибо

1 ответ

Это предполагаемое поведение. (Это и сущность HTML, и специальный символ XML. См. http://xml.silmaril.ie/specials.html) Это технически неверно, но я могу понять, почему одно поведение может быть желательным по сравнению с другим.

В любом случае, если вы хэшируете XML и сравниваете его с оригиналом, вы действительно не хотите загружать XML и переизлучать из анализатора стиля DOM. Пробелы, отступы и другие специальные символы XML могут отличаться. Если вы действительно хотите сравнить хэши, вам нужен XML, чтобы быть точным - и это означало бы канонизацию. Вы можете использовать Chilkat для канонизации XML. Например, скопируйте XML в этот онлайн-инструмент, чтобы сгенерировать как канонизированный XML, так и код для канонизации.

Другие вопросы по тегам