Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[TinyXML] Odczyt danych z XML

Ostatnio zmodyfikowano 2017-09-11 14:40
Autor Wiadomość
PL_Andrev
Temat założony przez niniejszego użytkownika
[TinyXML] Odczyt danych z XML
» 2017-09-11 10:36:16
Witam,
Mam problem: nie jestem w stanie odczytać danych z pliku XML i nie jestem w stanie stwierdzić powodów błędu. Kod jest żywcem przeniesiony z przykładu 3 z dokumentacji.
Błąd typu "Object reference not set to an instance of an object" w pliku tinyxml2.cpp. Będę wdzięczny za jakiekolwiek podpowiedzi, sugestie czy komentarze.

XML:
C/C++
<? xml version = "1.0" encoding = "utf-8" ?>
"<!DOCTYPE PLAY SYSTEM \"play.dtd\">"
< PLAY >
< TITLE > A Midsummer Night 's Dream</TITLE>
</ PLAY >

Kod:
C/C++
#include <iostream>
#include <conio.h>

#include "stdafx.h"
#include "tinyxml2.h"


using namespace System;
using namespace tinyxml2;

int main( array < System::String ^> ^ args )
{
    Console::WriteLine( L"Trying read XML doc" );
   
    const char * data = "PLAY";
   
    XMLDocument doc;
    doc.LoadFile( "C:\test.xml" );
    //doc.Parse("C:\dream.xml");
    XMLElement * titleElement = doc.FirstChildElement( "PLAY" )->FirstChildElement( "TITLE" );
   
    Console::WriteLine( L"Enter the XML" );
   
    const char * title = titleElement->GetText();
    printf( "Name of play (1): %s\n", title );
   
    XMLText * textNode = titleElement->FirstChild()->ToText();
    title = textNode->Value();
    printf( "Name of play (2): %s\n", title );
   
    return 0;
}
P-164782
Monika90
» 2017-09-11 11:37:57
Pewnie pliku nie udało się otworzyć, bo nie ma pliku o takiej nazwie "C:\test.xml", powinno być "C:/test.xml" - '\t' to jest znak tabulacji. Warto sprawdzać czy otwarcie pliku się udało, (dobrze zaprojektowana biblioteka rzuci wyjątek, wtedy nie trzeba sprawdzać).

A w ogóle to nie jest C++.
C/C++
int main( array < System::String ^> ^ args )
Co to jest???

C/C++
printf( "Name of play (2): %s\n", title );
printf wymaga #include <cstdio> i przedrostka std::
P-164784
PL_Andrev
Temat założony przez niniejszego użytkownika
» 2017-09-11 14:09:04
Działa - pięknie dziękuję.

A w ogóle to nie jest C++.
VC++, tryb konsoli.

P-164785
Kinexity
» 2017-09-11 14:40:49
VC++, tryb konsoli.
Na pewno nie - to jest C++/CLI. Jesteś już chyba trzecią osobą w tym kwartale, która nie rozróżnia C++/CLI od czystego C++ i pisze temat w niewłaściwym dziale.
P-164786
« 1 »
  Strona 1 z 1