123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- #include <stdio.h>
- #include <libxml/xmlreader.h>
- #ifdef LIBXML_READER_ENABLED
- static void processDoc(xmlTextReaderPtr readerPtr) {
- int ret;
- xmlDocPtr docPtr;
- const xmlChar *URL;
- ret = xmlTextReaderRead(readerPtr);
- while (ret == 1) {
- ret = xmlTextReaderRead(readerPtr);
- }
-
- docPtr = xmlTextReaderCurrentDoc(readerPtr);
- if (NULL == docPtr) {
- fprintf(stderr, "failed to obtain document\n");
- return;
- }
-
- URL = docPtr->URL;
- if (NULL == URL) {
- fprintf(stderr, "Failed to obtain URL\n");
- }
- if (ret != 0) {
- fprintf(stderr, "%s: Failed to parse\n", URL);
- return;
- }
- printf("%s: Processed ok\n", (const char *)URL);
- }
- int main(int argc, char **argv) {
- xmlTextReaderPtr readerPtr;
- int i;
- xmlDocPtr docPtr;
- if (argc < 2)
- return(1);
-
- LIBXML_TEST_VERSION
-
- readerPtr = xmlReaderForFile(argv[1], NULL, 0);
- if (NULL == readerPtr) {
- fprintf(stderr, "%s: failed to create reader\n", argv[1]);
- return(1);
- }
- processDoc(readerPtr);
-
- for (i=2; i < argc; ++i) {
- xmlReaderNewFile(readerPtr, argv[i], NULL, 0);
- if (NULL == readerPtr) {
- fprintf(stderr, "%s: failed to create reader\n", argv[i]);
- return(1);
- }
- processDoc(readerPtr);
- }
-
- docPtr = xmlTextReaderCurrentDoc(readerPtr);
- if (docPtr != NULL)
- xmlFreeDoc(docPtr);
-
- xmlFreeTextReader(readerPtr);
-
- xmlCleanupParser();
-
- xmlMemoryDump();
- return(0);
- }
- #else
- int main(void) {
- fprintf(stderr, "xmlReader support not compiled in\n");
- exit(1);
- }
- #endif
|