0
expat 라이브러리로 일부 XMPP를 구문 분석하려고합니다. 내가 좋아하는 입력 파일이 있습니다expat 라이브러리에서 "형식이 올바르지 않습니다 (잘못된 토큰)"오류가 발생했습니다.
<iq from='ya.ru' to='[email protected]/Foo1256' id='ping_1' type='get'><ping xmlns='urn:xmpp:ping'/></iq>
을하지만 오류가 "아니 잘 형성 (유효하지 않은 토큰)"나는 XML_Parse()
사용할 때마다이있다. exat가 "from = ...."또는 "iq"태그의 다른 속성을 구문 분석하려고 할 때 오류가 발생한다는 것을 알았습니다. 예를 들어 다음 문자열은 오류없이 구문 분석됩니다.
<iq><ping xmlns='urn:xmpp:ping'/></iq>
왜?
파서는 XML_ParserCreateNS(NULL, '|');
으로 생성됩니다.
이 구문 분석 기능 :
bool CSessionTreeItem::setXMLForParser(char *buf, int Len, AnsiString &Error)
{
bool error = false;
for(int i = 0; i < Len; i ++)
{
if(i + 5 < Len)
{
if(memcmp(buf + i, "<?xml", 5) == 0)
{
XML_ParserReset(parser, NULL);
InitHandlers();
}
}
if (!XML_Parse (parser, buf + i, 1, 0))
{
Error = AnsiString(XML_ErrorString (XML_GetErrorCode (parser)));
error = true;
break;
}
if(endCompressTag)
{
endCompressTag = false;
if(i + 1 < Len)
{
if(write(buf + i + 1, Len - (i + 2), Error) != 0)
{
error = true;
break;
}
}
break;
}
}
return (!error);
}
- C++ 빌더 2.1.0 국외 거주자 를 사용하여 내 경우 6
- 국외 거주자 2.0.1
속성 값을 큰 따옴표로 묶으려고 시도했습니다 :'from = "ya.ru"'? –
예. 계속 오류가 발생합니다. –