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

Вид: 13040|Ответ: 2

[C++] Техники для C++ для дампа производных данных объектов классов при разборе данных XML-файлов...

[Скопировать ссылку]
Опубликовано 16.01.2019 9:22:59 | | | |
Последний раз этот пост был отредактирован Саммер 16.01.2019 09:31

1. Какую техническую проблему следует решить в этой статье?

Решите проблему предшествующего типа техники, что при парсинге XML-документов на языке C++ теги базового класса, содержащие производные данные класса, появляющиеся в исходном XML-документе, могут парсировать базовые данные класса только в соответствии с типом базового класса согласно обычному методу разбора, но не могут полностью разобрать производные данные класса.


2. Технический фон

В предыдущей технике используйте boost::serialization для передачи производных классов с указателем базового класса или используйте BOOST_CLASS_EXPORT макрос.

Обе вышеуказанные схемы в существующих технологиях основаны на механизме абстрактных классов, но поскольку абстрактные классы нельзя инстанцировать как конкретные объекты, которые можно использовать, объекты, объявленные как базовые классы в XML-документах, не могут быть проанализированы. Данное изобретение направлено на то, чтобы данные как объекта базового класса, так и производного объекта класса, отмеченного объектом базового класса, могли быть корректно проанализированы и полностью сохранены.


3. Техническая схема, приведённая в этой статье

В этой статье не используется механизм абстрактного класса, но вводится указатель базового класса в класс, вызываемый базовым классом, объявляет функцию парсинга базового класса виртуальной функцией и вызывает функцию парсинга через указатель базового класса в процессе разбора, чтобы применить полиморфизм для динамического разбора и хранения данных, а также гарантирует, что данные как объекта базового класса, так и производного объекта класса, полученного из базового класса, могут храниться в указателе, определённом базовым классом.
Конкретные шаги:
Шаг 1: Написайте код на C++ для проектирования всех классов, соответствующих тегам данных в XML-документе, который подлежат разбору, и разбора XML-данных по одному из тегов верхнего уровня.
Шаг 2: Для каждого парсового тега определите, есть ли другие теги, которые наследуют тег как базовый класс, то есть производят ли тип тега другие типы тегов;
Шаг 3: Если установлено, что текущий тег не наследуется как базовый класс, разберите текущий тег в соответствии с обычными шагами разбора.
Шаг 4: Если установлено, что текущий тег наследуется как базовый класс, дополнительно определите, подчиняется ли содержимое базового класса объекту базового класса или производному классу;
Шаг 5: Если содержимое текущего базового класса определено для описания объекта базового класса, парсировать текущий тег в соответствии с обычными шагами.
Шаг 6: Если текущее содержимое базового тега класса описывает производный объект класса, модифицировать код для разбора в соответствии с новым методом разбора: изменить структуру данных предыдущего типа, определяющую объект базового класса, и определить вместо этого указатель базового класса; Модифицируйте функцию парсинга базового класса и объявите её виртуальной функцией;
Шаг 7: Если объект базового класса был изначально определен для парсинга, вместо него определяется указатель базового класса, и ему выделяется конкретный тип памяти в соответствии с типом, описанным содержимым метки, а указатель базового класса используется для вызова функции парсинга для разбора текущей метки.
Шаг 8: Парсинг и воспроизведение текущего тега, чтобы определить, остались ли ещё теги для разбора;
Шаг 9: Если установлено, что тегов для разбора нет, это означает, что парсинг завершен, и данные сохранены в класс с самой высокой меткой соответствующего XML-документа класса C++.
Шаг 10: Если установлено, что теги всё ещё не были решены, разберите следующий тег согласно шагу 2.

Приложена блок-схема

4. Краткое содержание

C++ вводит указатель базового класса для назначения объектов соответствующего типа содержимому XML-тега в зависимости от того, является ли он базовым или производным классом, и использует определённый указатель базового класса для вызова функции разбора, объявленной как воображаемая функция, для разбора содержимого XML-базового тега класса. Таким образом, когда XML-тег базового класса описывает данные объекта базового класса, функция парсинга базового класса будет динамически вызываться в соответствии с полиморфизмом C++, а данные базового класса, описанные тегом базового класса, могут быть корректно проанализированы и сохранены. Когда базовый тег класса XML описывает производные данные объекта класса, производная функция разбора класса будет динамически вызываться согласно полиморфизму C++, а производные данные класса, описанные базовым тегом класса, также могут быть корректно проанализированы и сохранены.





Предыдущий:Учебник по анализу протокола QQ для Android/ПК
Следующий:Призыв Demon Spirit V4.1.8 используется сдержанно
Опубликовано 16.01.2019 9:26:40 |
Блок-схема исчезла
 Хозяин| Опубликовано 16.01.2019 9:31:49 |
Опубликовано 16.01.2019 09:26
Блок-схема исчезла

Блок-схема добавляет, знаете ли
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com