У меня проблема с моим проектом, связанным с анализом xml. Я попробовал две библиотеки синтаксического анализатора xml (xmlParser и TinyXML), и они выделили одну и ту же ошибку в одной и той же точке кода. Сначала я думал, что это ошибка в xmlParser, но после того, как я обнаружил ту же ошибку в TinyXML, я думаю, что это должно быть какой-то момент моего кода или моего понимания. Я понятия не имею, как это исправить. позвольте мне подробнее ... 1001 *
Вот мой код, снятый с помощью xmlParser
XMLResults xe;
printf("%s\n", xmlData); //<XML SUC='1'></XML>
printf("Before parsing XML\n");
XMLNode xMainNode = XMLNode::parseString(xmlData, "XML", &xe);
printf("After parsing XML\n");
if(xe.error!=eXMLErrorNoXMLTagFound) {
bool suc = (bool)atoi(xMainNode.getAttribute("SUC"));
}else {
printf("non-xml data\n");
}
Еще один взломан с помощью TinyXML
TiXmlDocument xmlDoc;
printf("%s\n", xmlData); //<XML SUC='1'></XML>
printf("Before parsing XML\n");
xmlDoc.Parse(xmlData, 0, TIXML_DEFAULT_ENCODING);
TiXmlElement *xMainElem = xmlDoc.RootElement();
printf("After parsing XML\n");
И результат:
<XML SUC='1'></XML>
Before parsing XML
//and then crash
xmlData is
char xmlData[4096];
который получен из сокета 'recvfrom ()', я не знаю, но он выводится правильно.
приведенный выше код находится в функции сигнала, допустим, он будет выполняться только тогда, когда сокет получит xmlData.
Это не сбой при первом сигнале (или первом выполнении), но, в конце концов, сбой после того, как это произойдет, это займет 3 сес - 10 минут (непредсказуемо).
И, как видно из заголовка, этот код отлично работает на iOS, но на Mac это приводит к сбою.