Как создать контрольную сумму для файла XML в Java - PullRequest
3 голосов
/ 07 сентября 2010

Мне нужно создать контрольную сумму для XML-файла в Java. Основные требования:

  1. Порядок элементов имеет значение;
  2. Пара атрибутов имя-значение важна, но порядок атрибутов НЕ;
  3. Игнорировать все пробелы и комментарии

Кто-нибудь может предоставить любую подсказку или пример кода?

Спасибо, Mark

Ответы [ 3 ]

6 голосов
/ 07 сентября 2010

Вы можете использовать API цифровой подписи Java Java:

Введение в API цифровой подписи Java Java

2 голосов
/ 07 сентября 2010

Метод 1: Используйте XSLT для нормализации документа.

По сути, вы бы использовали XSLT для нормализации документов XML, чтобы эквивалентные документы перешли в один и тот же документ. Преобразование будет:

  1. Поддерживать порядок элементов
  2. Порядок атрибутов каждого элемента (например, в алфавитном порядке на основе имени атрибута)
  3. Удалите пробелы и комментарии

Затем вы проверите контрольную сумму нормализованной версии документа.

Некоторые полезные ссылки:

Метод 2. Использование DOM-парсера

  1. Использование синтаксического анализатора DOM для создания дерева DOM
  2. Нормализуйте дерево DOM в соответствии с вашими правилами
  3. Пройдите по дереву и передайте элементы XML в калькулятор контрольной суммы

Метод 3. Использование парсера SAX или StAX

Если вам не нравится промежуточный этап создания нормализованного документа или дерева DOM, вы можете использовать SAX или StAX для синтаксического анализа XML, чтобы поддерживать / упорядочить / вырезать, как указано выше, на лету и передать каждый элемент / контент / атрибут / значение / и т.д. в калькулятор контрольной суммы.

1 голос
/ 24 марта 2016

проверьте стандарт W3C 'c14n'. + игнорировать пробелы. Он даже будет обрабатывать пространства имен. Наверняка у вас в библиотеке есть реализация

...