Написать XML в текстовый файл с TinyXml - PullRequest
3 голосов
/ 26 ноября 2011

У меня есть простой XML-файл, но большой.Допустим,

<products>
    <product_id>98667</product_id>
        <name>Hiking Boots</name>
            <price>34.99</price>

    <product_id>10123</product_id>
        <name>Work Gloves</name>
            <price>12.99</price>

    <product_id>15773</product_id>
        <name>Belt</name>
            <price>14.99</price>
</products>

Я хочу записать данные всего файла (скажем, 500 записей) в текстовый файл с разделителями табуляции.Чтобы понять процесс еще лучше, скажем, я хочу написать только название продукта и цену продукта.Я не мог понять, где типичные учебники TinyXml охватывали этот тип записи.

Мой код:

void MyProducts::writeProducts(const char *pFilename) {
  TiXmlDocument doc(pFilename);
  bool loadOkay = doc.LoadFile();
  if (loadOkay) {
    cout<<"The file loaded"<<endl;
    cout<<pFilename<<endl;
    cout<<doc<<endl;
  }
  else {
    cout<<"Failed to load file \"%s\"\n"<< pFilename<<endl;
  }
} // end function

Я не уверен, что хочу анализировать построчно, как обычныйфайл или, если это даже хорошо с этим API.Я могу распечатать все содержимое документа, так что я знаю, что файл загружается.Любая помощь приветствуется.Я уверен, что нужно просто знать, какие вызовы функций сделать.

1 Ответ

0 голосов
/ 02 декабря 2011

Я бы сначала прошел их учебник . Это показывает некоторые основные записи XML, а также чтение.

Приведенные выше комментарии верны ... Вы должны загрузить XML-документ (как у вас в примере с кодом) и затем просмотреть XML.

Глядя на документацию, поскольку у вас уже загружен XMLDocument, вам необходимо вызвать метод RootElement . Это возвращает элемент . Из элемента вы можете извлечь информацию о текущем узле. Чтобы «углубиться» в дерево, вам нужно будет использовать TiXmlNode :: IterateChildren , чтобы пройти по дочерним элементам корневых элементов. Когда вы перемещаетесь по дереву, возвращается TiXmlNode. Затем вы используете методы Nodes для получения разных типов классов, которые затем извлекают разную информацию.

...