XML-комментарии читаются как дочерние узлы

У меня есть некоторый код, который читает в файле XML как входные данные для модели компьютера (написанный на C ++ и скомпилированный с использованием VS2012). После обновления в формате XML некоторых входных данных программное обеспечение прекратило чтение файла в его новом формате (код был изменен в соответствии с новым форматом данных), и после исследования выяснилось, что это произошло потому, что новые Формат данных включал комментарии в файл XML, который синтаксический анализатор xml (msxml6) считал дочерними узлами. Следовательно, первый дочерний узел, который он прочитал, не смог понять, и программное обеспечение вышло, как было задумано.

Хотя сейчас мы исправили проблему (удалив необязательные комментарии из файла XML), мне было интересно, знает ли кто-нибудь, почему анализатор считает комментарии дочерними узлами? Я был под впечатлением, что комментарии должны были игнорироваться парсерами?

0

Решение

В большинстве древовидных моделей XML (например, DOM) комментарии действительно являются дочерними узлами содержащего элемента, и приложение должно убедиться, что они пропущены при чтении дерева.

Распространенная ошибка — забывать об этом и думать, что при тестировании приложения на исходных документах без комментариев оно продолжит работать, если отправитель решит включить комментарии.

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]