當TinyXml的或rapidXML解析我有當「<」字被放入XML文件這樣的錯誤:TinyXml的或rapidXML崩潰
Process returned -1073741819 (0xC0000005) execution time : 2.335 s Press any key to continue.
你知道如何避免這種情況?
#include <iostream>
#include "tinyxml2.h"
using namespace std;
int main()
{
tinyxml2::XMLDocument doc;
doc.LoadFile("my.xml");
tinyxml2::XMLElement* element;
tinyxml2::XMLNode* node;
node = doc.FirstChildElement("root") -> FirstChildElement("sample");
while (node != NULL)
{
cout << "--START--" << endl;
element = node -> FirstChildElement("field0");
while(element != NULL)
{
const char* title = element -> GetText();
if (title != NULL)
cout << ":: " << title << endl;
else
cout << ":: NULL" << endl;
element = element -> NextSiblingElement();
}
cout << "---END---" << endl << endl;
node = node -> NextSibling();
}
return 0;
}
my.xml文件是類似的東西 - 採取<crash>
標記一下或放<crash>
只有<
字符,而不是 - 它導致反正崩潰:
<root>
<sample>
<field0><crash>1</field0>
<field1>2</field1>
<field2>3</field2>
<field3>4</field3>
<field4>5</field4>
<field5>6</field5>
<field6>7</field6>
<field7>8</field7>
</sample>
</root>
GDB輸出:
Program received signal SIGSEGV, Segmentation fault. 0x0000000000402c5e in tinyxml2::XMLNode::FirstChildElement(char const*) const() (gdb) where #0 0x0000000000402c5e in tinyxml2::XMLNode::FirstChildElement(char const*) const() #1 0x00000000004013f7 in tinyxml2::XMLNode::FirstChildElement(char const*)() #2 0x00000000004in main()
我想補充一點,我已經與rapidXML庫相同。
''沒有終止符。 –
2014-10-05 15:04:53
儘管不應該導致崩潰。 – 2014-10-05 15:05:22
你有沒有嘗試在像gdb這樣的調試器下運行它? – 2014-10-05 15:07:15