Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > pugixml проблемы


Автор: MaksSh 17.4.2009, 12:46
Всем привет
начал использовать pugixml и сразу столкнулся с проблемой
 вот код взят из примера pugixml
Код

int main()
{
    xml_document doc;
    if(!doc.load("<bookstore><book title='ShaderX'><price>3</price></book><book title='GPU Gems'><price>4</price></book></bookstore>"))
    {
       cout << "Oshbka doc" << endl;
    }

    // If you want to iterate through nodes...

    {
        // Get a bookstore node
        xml_node bookstore = doc.child("bookstore");
        if(!bookstore)
        {
            
            cout << "Oshbka node" << endl;
        }
        // Iterate through books
        for (xml_node book = bookstore.child("book"); book; book = book.next_sibling("book"))
        {
            cout << "Book " << book.attribute("title").value() << ", price " << book.child("price").first_child().value() << endl;
        }

                        doc.save_file( "name3" , " "  );

        // Output:
        // Book ShaderX, price 3
        // Book GPU Gems, price 4
    }
    char r;
    cin >> r;
    cout << "Yf;vbnt lubuu blavishy dla buxoda" << endl;
};

заменяю строку
Код

if(!doc.load("<bookstore><book title='ShaderX'><price>3</price></book><book title='GPU Gems'><price>4</price></book></bookstore>"))

на
Код

if(!doc.load("name1.xml"))

name1.xml содержит ту же строку, XMLNotepadом открывается нормально
но теперь приложение выдаёт строку "Oshbka node"
произошла ошибка причтении XMLа, пробовал из строки создать XML создаётся прекрасно, но опять же прочитать я его не могу
в чем проблема я не понял

Автор: chaos 17.4.2009, 14:11
сдается мне что метод load загружает непосредственно контент, а не открывает файл и ....

Код

ifstream in("in.txt");

string content;
copy(istream_iterator<string>(in),
        istream_iterator<string>(),
        back_inserter(content));

doc.load(content.c_str());

Автор: math64 20.4.2009, 07:20
Все проще:
Код

doc.load_file("name.xml");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)