Глава 40 – Работа с XML

Работа с XML

Приобрести книгу можно на сайте ozon.ru и в электронном виде на Google Play:
Приобрести книгу о Qt и C++ на Ozon.ru Купить книгу о Qt и C++ на Goole Play

7 thoughts on “Глава 40 – Работа с XML

  1. Здравствуйте, Макс!
    В листингах 40.4 и 40.5 программы, которая создает XML-документ и записывает его в файл, в функциях contact и makeElement Вы передаете элемент domDoc, типа QDomDocument по ссылке (QDomDocument& domDoc).
    Я правильно понимаю, что это сделано для того, чтобы снизить накладные расходы (т.е. при сохранении большого XML-файла не копировать большой объем данных в каждую из этих функций)?
    Возник вопрос об отличии узла от элемента в XML. Правильно ли я понимаю, что узлом может быть и атрибут, и текст, а элемент – это конкретно открывающий и закрывающий тег и все параметры (имя, атрибут, текст и т.д.)? И любой элемент в XML также является узлом? Т.е., как я понял, узел, понятие более абстрактное, чем элемент…

    1. Здравствуйте, Вячеслав!
      Методы contact() и makeElement() можно было бы совместить в одном единственном методе. Я их разделил только для того чтобы немного сделать код программы более читаемым. Вызываемому методу makeElement() нужнет объект QDomDocument, поэтому мы его передаем в метод contact(), а тот передает его дальше. Узел дерева DOM обязательно имеет открывающий тег и закрывающий тег, все что располагается между этими тегами является дочерними узлами этого элемента. Аттрибуты не обладают таким свойством, поэтому узламы они не являются.

      1. Спасибо за пояснение, Макс. Наверное, я немного некорректно сформулировал вопрос… Я имел ввиду не в принципе передачу в методы contact() и makeElement() объекта QDomDocument, в этом я разобрался. Меня интересовала именно передача его в методы ПО ССЫЛКЕ. Т.к. его можно передать по значению (by value), и всё так же будет корректно работать.
        А вопрос об УЗЛЕ и ЭЛЕМЕНТЕ и их различии возник при работе с классами QDomNode и QDomElement. Получается у ЭЛЕМЕНТА не может быть потомков в виде УЗЛОВ, а у УЗЛА они могут быть? При этом любой ЭЛЕМЕНТ является узлом?

  2. В листинге 40.9, на стр. 595 в строке: “qDebug() << "Can't open the file for reading:" << argv[1]", должен быть параметр argv[2].

  3. На странице 596: “Вывод на консоль будет следующим: …”, должны быть выведены все контакты в xml-документе, т.е. Piggy и Kermit.

    1. Да, именно так. Вывод для примера должен быть следующим:
      “(name:Piggy email:piggy@mega.de phone:+49 631322187) (name:Kermit email:kermit@mega.de phone:+49 631322181) \n”

Leave a Reply to Вячеслав Турчин Cancel reply

Your email address will not be published.

Please reload

Please Wait