Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[C++]TinyXML parset niet volledig (?)

Pagina: 1
Acties:

  • scorpie
  • Registratie: Augustus 2001
  • Laatst online: 17-11 16:45

scorpie

Supra Addict

Topicstarter
Ik heb een probleem met een kleine XML parser genaamd TinyXML. Ik heb het volgende XML bestand:

XML:
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8" ?>

<configuration>
    <screen>
        <width>800</width>
        <height>600</height>
        <bpp>32</bpp>
    </screen>
</configuration>


En de volgende (verkorte) code:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void readConfig(TiXmlDocument* doc) {
    TiXmlHandle docHandle(doc);
    TiXmlHandle hRoot(0);
    TiXmlElement* pElem;
    pElem = docHandle.FirstChildElement().Element();
    if (pElem) {
        TiXmlElement* test;
        hRoot = TiXmlHandle(pElem);

        printf("Value van pElem is: %s, en GetText is:%s\n", pElem->Value(), pElem->GetText());
        printf("Value van hRoot is: %s, en GetText is:%s\n", (hRoot.ToElement())->Value(), (hRoot.ToElement())->GetText());
        test = hRoot.FirstChildElement().Element();
        if (test) {
            printf("Value van test is: %s, en GetText is:%s\n", test->Value(), test->GetText());
        }
    }
}

int main() {
    const char* fullPath = "bla.xml";

    TiXmlDocument doc(fullPath);
    if (doc.LoadFile()) {
        readConfig(&doc);
    }

    return 0;
}


De output hiervan is het volgende:
code:
1
2
Value van pElem is: configuration, en GetText is:(null)
Value van hRoot is: configuration, en GetText is:(null)


Wat ik dus niet begrijp, is dat 'test' niet werkt.
Ik heb van de tutorial, bij "Decoding state from XML" de relevante delen gebruikt. Zoals erboven te zien is, lijkt hun XML bestand ook vrij overeenkomstig te zijn met de mijne. In de tutorial is ook te zien dat ze
C++:
1
pElem = hRoot.FirstChild() ....

gebruiken ipv FirstChildElement(), (welke ik ook heb geprobeerd) maar in de documentatie staat dat de een pointer naar een Node returned, en de ander een pointer naar een Element, welke een subclass is van Node, dus heel veel maakt dat niet uit, aangezien hij later alsnog omgezet wordt in een Element.

Omdat ik het maar een vreemd probleem vind, heb ik uit de documentatie ook de "print_to_stdout" functie gebruikt, en bij het parsen hield hij inderdaad op na het volgende geprint te hebben:
code:
1
2
3
DOCUMENT
+ DECLARATION
+ ELEMENT configuration


Het lijkt er dus op of de parser niet verder wil traversen, maar ik snap er echt helemaal niks meer van.

Typefouten voorbehouden, m'n toetsenbord wil nog wel eens zomaar extra characters typen..

wil een Toyota Supra mkIV!!!!! | wil een Yamaha YZF-R{1,6} | wil stiekem ook een Ducati
"Security is just a state of mind"
PSN: scorpie | Diablo 3: scorpie#2470


  • scorpie
  • Registratie: Augustus 2001
  • Laatst online: 17-11 16:45

scorpie

Supra Addict

Topicstarter
I'm an IDIOT, bij het debuggen wordt er natuurlijk een andere rootmap gebruikt... *zucht* :X

wil een Toyota Supra mkIV!!!!! | wil een Yamaha YZF-R{1,6} | wil stiekem ook een Ducati
"Security is just a state of mind"
PSN: scorpie | Diablo 3: scorpie#2470