000
29.05.2007, 14:18 Uhr
FunnyDingo
|
Hallo zusammen,
nachdem mein config-Singleton läuft, wollte ich ihm beibringen, eine XML Datei zu verarbeiten. Ihr mein Ansatz:
C++: |
class_config::class_config() { xmlTextReaderPtr xmlReader; int ret;
//xmlReader = xmlReaderForFile("config.xml", NULL, XML_PARSE_NOERROR); xmlReader = xmlReaderForFile("config.xml", NULL, 0); if (xmlReader != NULL) { ret = xmlTextReaderRead(xmlReader); while(ret == 1) { xmlNodePtr currentNode = xmlTextReaderCurrentNode(xmlReader); if (xmlStrcmp(currentNode->name, (const xmlChar *)"base") == 0 && xmlTextReaderNodeType(xmlReader) == 1 && xmlTextReaderDepth(xmlReader) == 1) processBaseNode(currentNode->children); ret = xmlTextReaderRead(xmlReader); } xmlFreeTextReader(xmlReader); if (ret != 0) { std::cout << "config.xml failed to parse" << std::endl; } } else { std::cout << "Unable to open config.xml" << std::endl; } }
void class_config::processBaseNode(xmlNodePtr startNode) { xmlNodePtr currentNode = startNode; while(currentNode) { printf("CurrentNodeName %s, Type: %i, Content: %s\n", currentNode->name, currentNode->type, currentNode->content); currentNode = currentNode->next; } }
|
Irgendwie bin ich über das Ergebnis erstaunt:
Code: |
CurrentNodeName text, Type: 3, Content:
CurrentNodeName enablelog, Type: 1, Content: (null) CurrentNodeName text, Type: 3, Content:
|
Das ist mein Beispiel File
Code: |
<?xml version="1.0" encoding="iso-8859-1" ?> <yac> <base> <enablelog>1</enablelog> </base> <npm name="http"> <port>5000</port> <ip>0.0.0.0</ip> </npm> </yac>
|
Also ich verstehe die Ausgabe gar nicht. Hat jemand ne Ahnung wo mein Fehler liegt?
Gruß, Funny -- "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)
Meine Website: http://www.funnydingo.de Dieser Post wurde am 29.05.2007 um 14:20 Uhr von FunnyDingo editiert. |