Библиотеки синтаксического анализа XML получили сбой в Mac App, в то время как на iOS работают нормально - PullRequest
0 голосов
/ 12 марта 2012

У меня проблема с моим проектом, связанным с анализом 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 это приводит к сбою.

...