Помогите с Writing XML



  • Помогите кто может пожалуйста
    Файл должен быть таким

    • <?xml version="1.0" encoding="windows-1251"?>

    • <catalog>

    • <item>

    • <link rel="image" href="image.png" /> // << Не могу справиться с этим....????????

    • <title>Computer...</title>

    • <description>Microsoft's....</description>

    • </item>

    • </catalog>

    • Пишу так:

    • ....

    • QDomDocument doc;

    • QDomElement root = doc.createElement("catalog");

    • doc.appendChild(root);

    • for(int i = 0; i < 5; i++)

    • {

    • QDomElement itm = doc.createElement("item");

    • QDomElement e = doc.createElement("link");

    • QDomAttr a = e.attributeNode("rel");

    • qDebug()<<a.value();

    • a.setValue("image");

    • QDomAttr a2 = e.attributeNode("href");

    • qDebug()<<a2.value();

    • a2.setValue("image.png");

    • QDomElement quote = doc.createElement("title");

    • QDomElement dscrp = doc.createElement("description");

    • QDomText titl = doc.createTextNode("Computer...");

    • QDomText dvlp = doc.createTextNode("Microsoft's....");

    • root.appendChild(itm);

    • itm.appendChild(quote);

    • itm.appendChild(dscrp);

    • quote.appendChild(titl);

    • dscrp.appendChild(dvlp);

    • }

    • QDomNode xmlNode = doc.createProcessingInstruction("xml", "version='1.0' encoding='windows-1251'");

    • doc.appendChild(instr);
      .....

    Выдает Ошибку C:\Users\NEO\Desktop\apps-build-desktop-Qt_4_8_1_for_Desktop_-MinGW__Qt_SDK________..\apps\main.cpp:36: ошибка: 'cout' was not declared in this scope

    Cтудент не справляюсь

    Материал ссылка https://developer.blackberry.com/cascades/reference/qdomattr.html

    Здравствуйте qxoz. Благодарю Вас за ваше отношение, и попытку помочь в решении задачи. Выдает такое сообщение

    • #include <QtCore/QCoreApplication>

    • #include <QDebug>

    • #include <QDir>

    • #include <QtXml>

    • #include <QDomText>

    • #include <QFile>

    • #include <QDomAttr>

    • using namespace std; // Эту строку убрал

      • добавил qDebug()<<a.value();
      • убрал cout << a.value() << endl;

    C:\Users\NEO\Desktop\cons-build-desktop-Qt_4_8_1_for_Desktop_-MinGW__Qt_SDK________..\cons\main.cpp:38: ошибка: conversion from 'QDomAttr' to non-scalar type 'QDomElement' requested

    C:\Users\NEO\Desktop\cons-build-desktop-Qt_4_8_1_for_Desktop_-MinGW__Qt_SDK________..\cons\main.cpp:40: ошибка: 'class QDomElement' has no member named 'value'

    C:\Users\NEO\Desktop\cons-build-desktop-Qt_4_8_1_for_Desktop_-MinGW__Qt_SDK________..\cons\main.cpp:41: ошибка: 'class QDomElement' has no member named 'setValue'

    C:\Users\NEO\Desktop\cons-build-desktop-Qt_4_8_1_for_Desktop_-MinGW__Qt_SDK________..\cons\main.cpp:42: ошибка: 'class QDomDocument' has no member named 'attributeNode'

    Написал таким образом, консоль работает, файл написан, и до этого писала, перенес в проект, затем начала выдавать ошибки, начал пробовать другие варианты, инфы по этому вопросу в инете практически нет, пробовал вариант тот, что сверху

    @// Пишу Xml
    QDomDocument document;
    QDomProcessingInstruction instr = document.createProcessingInstruction(
    "xml", "version='1.0' encoding='windows-1251'");
    document.appendChild(instr);

    // Делаю root element
     QDomElement root = document.createElement("catalog");
    
    // Добавляю в document
     document.appendChild(root);
    
    // Добавляю elements
      for (int i = 0; i < 5; i++)
      {
       QDomElement item = document.createElement("item");
       item.setAttribute("ID", QString::number(i));
       root.appendChild(item);
       QDomElement elem = document.createElement("link");
       elem.setAttribute("rel='image' href", "img.png");
       item.appendChild(elem);
       QDomElement title = document.createElement("title");
       QDomElement description = document.createElement("description");
       QDomText txtitle = document.createTextNode("Computer…");
       QDomText txtdscpt = document.createTextNode("Microsoft’s…");
       item.appendChild(title);
       item.appendChild(description);
       title.appendChild(txtitle);
       description.appendChild(txtdscpt);
    
      }@
    

    Правильный код или нет?

    @<?xml version='1.0' encoding='windows-1251'?>
    <catalog>
    <item ID="0">
    <link rel='image' href="img.png"/>
    <title>Computer�</title>
    <description>Microsoft�s�</description>
    </item>
    <item ID="1">
    <link rel='image' href="img.png"/>
    <title>Computer�</title>
    <description>Microsoft�s�</description>
    </item>
    <item ID="2">
    <link rel='image' href="img.png"/>
    <title>Computer�</title>
    <description>Microsoft�s�</description>
    </item>
    <item ID="3">
    <link rel='image' href="img.png"/>
    <title>Computer�</title>
    <description>Microsoft�s�</description>
    </item>
    <item ID="4">
    <link rel='image' href="img.png"/>
    <title>Computer�</title>
    <description>Microsoft�s�</description>
    </item>
    </catalog>
    @
    Получаю такой вид

    Запускается C:\Users\NEO\Desktop\cons-build-desktop-Qt_4_8_1_for_Desktop_-MinGW__Qt_SDK________\debug\cons.exe...
    C:\Users\NEO\Desktop\cons-build-desktop-Qt_4_8_1_for_Desktop_-MinGW__Qt_SDK________\debug\cons.exe завершился с кодом 0



  • Добрый день.
    В этом примере cout нужен для вывода в консоль, для работы программы вы можете пропустить его. Или же в начале программы добавьте
    @using namespace std;@
    так же вместо cout можете использовать
    @qDebug()<<a.value();@
    только не забудьте подключить #include <QDebug>


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.