mirror of
				https://gitlab.gnome.org/GNOME/libxml2.git
				synced 2025-10-30 10:45:36 +03:00 
			
		
		
		
	There's no simple way to make the doc/examples tests handle different configurations. But these tests aren't especially valuable, so remove the result file checks.
		
			
				
	
	
		
			108 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|  * section: xmlReader
 | |
|  * synopsis: Parse an XML file with an xmlReader
 | |
|  * purpose: Demonstrate the use of xmlReaderForFile() to parse an XML file
 | |
|  *          and dump the information about the nodes found in the process.
 | |
|  *          (Note that the XMLReader functions require libxml2 version later
 | |
|  *          than 2.6.)
 | |
|  * usage: reader1 <filename>
 | |
|  * test: reader1 test2.xml > reader1.tmp && diff reader1.tmp $(srcdir)/reader1.res
 | |
|  * author: Daniel Veillard
 | |
|  * copy: see Copyright for the status of this software.
 | |
|  */
 | |
| 
 | |
| #include <stdio.h>
 | |
| #include <libxml/xmlreader.h>
 | |
| 
 | |
| #ifdef LIBXML_READER_ENABLED
 | |
| 
 | |
| /**
 | |
|  * processNode:
 | |
|  * @reader: the xmlReader
 | |
|  *
 | |
|  * Dump information about the current node
 | |
|  */
 | |
| static void
 | |
| processNode(xmlTextReaderPtr reader) {
 | |
|     const xmlChar *name, *value;
 | |
| 
 | |
|     name = xmlTextReaderConstName(reader);
 | |
|     if (name == NULL)
 | |
| 	name = BAD_CAST "--";
 | |
| 
 | |
|     value = xmlTextReaderConstValue(reader);
 | |
| 
 | |
|     printf("%d %d %s %d %d", 
 | |
| 	    xmlTextReaderDepth(reader),
 | |
| 	    xmlTextReaderNodeType(reader),
 | |
| 	    name,
 | |
| 	    xmlTextReaderIsEmptyElement(reader),
 | |
| 	    xmlTextReaderHasValue(reader));
 | |
|     if (value == NULL)
 | |
| 	printf("\n");
 | |
|     else {
 | |
|         if (xmlStrlen(value) > 40)
 | |
|             printf(" %.40s...\n", value);
 | |
|         else
 | |
| 	    printf(" %s\n", value);
 | |
|     }
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * streamFile:
 | |
|  * @filename: the file name to parse
 | |
|  *
 | |
|  * Parse and print information about an XML file.
 | |
|  */
 | |
| static void
 | |
| streamFile(const char *filename) {
 | |
|     xmlTextReaderPtr reader;
 | |
|     int ret;
 | |
| 
 | |
|     reader = xmlReaderForFile(filename, NULL, 0);
 | |
|     if (reader != NULL) {
 | |
|         ret = xmlTextReaderRead(reader);
 | |
|         while (ret == 1) {
 | |
|             processNode(reader);
 | |
|             ret = xmlTextReaderRead(reader);
 | |
|         }
 | |
|         xmlFreeTextReader(reader);
 | |
|         if (ret != 0) {
 | |
|             fprintf(stderr, "%s : failed to parse\n", filename);
 | |
|         }
 | |
|     } else {
 | |
|         fprintf(stderr, "Unable to open %s\n", filename);
 | |
|     }
 | |
| }
 | |
| 
 | |
| int main(int argc, char **argv) {
 | |
|     if (argc != 2)
 | |
|         return(1);
 | |
| 
 | |
|     /*
 | |
|      * this initialize the library and check potential ABI mismatches
 | |
|      * between the version it was compiled for and the actual shared
 | |
|      * library used.
 | |
|      */
 | |
|     LIBXML_TEST_VERSION
 | |
| 
 | |
|     streamFile(argv[1]);
 | |
| 
 | |
|     /*
 | |
|      * Cleanup function for the XML library.
 | |
|      */
 | |
|     xmlCleanupParser();
 | |
|     /*
 | |
|      * this is to debug memory for regression tests
 | |
|      */
 | |
|     xmlMemoryDump();
 | |
|     return(0);
 | |
| }
 | |
| 
 | |
| #else
 | |
| int main(void) {
 | |
|     fprintf(stderr, "XInclude support not compiled in\n");
 | |
|     return(0);
 | |
| }
 | |
| #endif
 |