Я создаю соответствующий и проверяющий синтаксический анализатор XML на С++ и пытаюсь сделать его легким для использования в карманном компьютере.
Вначале я решил добавить в свой парсер какие-то "события", как это делает SAX, информирующие об элементах, инструкциях по обработке и т.д.
Эти события принимаются производным классом, который строит дерево DOM XML.
Мои сомнения появляются при попытке обрабатывать в основном объекты (которые могут содержать элементы, пи и комментарии внутри, если они определены) и их разрешение.
Например, я могу создать класс XMLEntityRef, который ссылается на некоторый объект XMLEntity, определенный в некотором объекте XMLDocType, как это делает парсер .NET system.xml.
Насколько я знаю, для большинства целей приложению необходимо знать элемент, его содержимое, его соответствующие атрибуты и их соответствующие значения... только строки... ему все равно, сформировано ли содержимое элемента объектами cdata, ссылками на сущности и/или обычный текст... то же самое относится и к значениям атрибутов.
Итак, мой вопрос заключается в следующем: в чем преимущество передачи приложению каждого объекта xml в том виде, в котором он появляется, и предоставления ему (или вспомогательному классу) возможности создавать, например, значение результирующего атрибута путем объединения текстов и разрешенных ссылок на сущности?
Если я делаю опрос, пожалуйста, ответьте: нужно ли вашему приложению знать о тегах cdata и о том, где они находятся в xml-файле, или вы упрощаете задачу... вы хотите знать полное значение содержимого элемента в строку, не беспокоясь о том, как она построена?
С уважением, Мауро Х. Легьери