[Expat-discuss] not well-formed (invalid token) at line 1
zhang yikai
yikaikai at gmail.com
Wed May 5 05:55:59 CEST 2010
hi all,
I want to use expat analysis xml file, here is my code modify from examples:
static void XMLCALL
startElement(void *userData, const char *name, const char **atts)
{
int i;
int *depthPtr = (int *)userData;
for (i = 0; i < *depthPtr; i++)
putchar('\t');
puts(name);
for (i = 0; atts[i]; i += 2)
{
printf(" %s='%s'", atts[i], atts[i + 1]);
}
*depthPtr += 1;
}
static void XMLCALL
endElement(void *userData, const char *name)
{
int *depthPtr = (int *)userData;
*depthPtr -= 1;
}
int
main(int argc, char *argv[])
{
char buf[1024] = "<?xml version=\"1.0\" encoding=\"UTF-8\"
standalone=\"no\" ?>\
<INVENTORY>\
<BOOK>\
<TITLE>The Adventures of Huckleberry Finn</TITLE>\
<AUTHOR>Mark Twain</AUTHOR>\
<BINDING>mass market paperback</BINDING>\
<PAGES>298</PAGES>\
<PRICE>$5.49</PRICE>\
</BOOK>\
<BOOK>\
<TITLE>Leaves of Grass</TITLE>\
<AUTHOR>Walt Whitman</AUTHOR>\
<BINDING>hardcover</BINDING>\
<PAGES>462</PAGES>\
<PRICE>$7.75</PRICE>\
</BOOK>\
</INVENTORY>";
XML_Parser parser = XML_ParserCreate(NULL);
int done;
int depth = 0;
XML_SetUserData(parser, &depth);
XML_SetElementHandler(parser, startElement, endElement);
do {
if (XML_Parse(parser, buf, 1024, 1) == XML_STATUS_ERROR) {
printf("%s at line %d\n" XML_FMT_INT_MOD "u\n",
XML_ErrorString(XML_GetErrorCode(parser)),
XML_GetCurrentLineNumber(parser));
return 1;
}
} while (1);
XML_ParserFree(parser);
return 0;
}
got result :
INVENTORY
BOOK
TITLE
AUTHOR
BINDING
PAGES
PRICE
BOOK
TITLE
AUTHOR
BINDING
PAGES
PRICE
not well-formed (invalid token) at line 1
what wrong with my code? thank you
More information about the Expat-discuss
mailing list