Ich hab gleich mal eine Frage zum IrrXML-Parser.
und zwar, wenn der NodeType EXN_TEXT ist, geben getNodeData() und getNodeName() das selbe zurück - den Text zwischen schließendem und öffnendem Tag.
Wenn der NodeType aber EXN_ELEMENT ist, dann geben getNodeName() und getNodeData() auch das selbe zurück - den "Namen" des Tags.
Jetzt will ich aber - auch wenn getNodeType() gleich EXN_TEXT ist, den Namen des Tags herausfinden, um wirklich nur die Tags zu zählen, die auch row heißen.
Mein Code sieht gerade so aus(Nur als Test natürlich):
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
void CLevel::load(string filename)
{
m_xml = createIrrXMLReader(filename.c_str());
// parse the file until end reached
int row = 0;
while(m_xml && m_xml->read())
{
if(m_xml->getNodeType() == EXN_TEXT && m_xml->getNodeData() != "" )
{
cout << "Row: " << row << endl;
row++;
}
}
}
|
Mein XML-Datei so:
<?xml version="1.0" ?>
<level name="FirstLevel">
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
<row>GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG</row>
</level>
(G soll nachher Grass heißen.).
Die Ausgabe ist nachher:
row:0
...
row:39
Sollte aber nur bis 20 gehen.
Hoffe, es weiß jemand Rat
MfG