VirtualBox

source: vbox/trunk/src/libs/libxml2-2.9.14/doc/examples/reader1.c@ 95312

Last change on this file since 95312 was 95312, checked in by vboxsync, 2 years ago

libs/{curl,libxml2}: OSE export fixes, bugref:8515

  • Property svn:eol-style set to native
File size: 2.5 KB
Line 
1/**
2 * section: xmlReader
3 * synopsis: Parse an XML file with an xmlReader
4 * purpose: Demonstrate the use of xmlReaderForFile() to parse an XML file
5 * and dump the information about the nodes found in the process.
6 * (Note that the XMLReader functions require libxml2 version later
7 * than 2.6.)
8 * usage: reader1 <filename>
9 * test: reader1 test2.xml > reader1.tmp && diff reader1.tmp $(srcdir)/reader1.res
10 * author: Daniel Veillard
11 * copy: see Copyright for the status of this software.
12 */
13
14#include <stdio.h>
15#include <libxml/xmlreader.h>
16
17#ifdef LIBXML_READER_ENABLED
18
19/**
20 * processNode:
21 * @reader: the xmlReader
22 *
23 * Dump information about the current node
24 */
25static void
26processNode(xmlTextReaderPtr reader) {
27 const xmlChar *name, *value;
28
29 name = xmlTextReaderConstName(reader);
30 if (name == NULL)
31 name = BAD_CAST "--";
32
33 value = xmlTextReaderConstValue(reader);
34
35 printf("%d %d %s %d %d",
36 xmlTextReaderDepth(reader),
37 xmlTextReaderNodeType(reader),
38 name,
39 xmlTextReaderIsEmptyElement(reader),
40 xmlTextReaderHasValue(reader));
41 if (value == NULL)
42 printf("\n");
43 else {
44 if (xmlStrlen(value) > 40)
45 printf(" %.40s...\n", value);
46 else
47 printf(" %s\n", value);
48 }
49}
50
51/**
52 * streamFile:
53 * @filename: the file name to parse
54 *
55 * Parse and print information about an XML file.
56 */
57static void
58streamFile(const char *filename) {
59 xmlTextReaderPtr reader;
60 int ret;
61
62 reader = xmlReaderForFile(filename, NULL, 0);
63 if (reader != NULL) {
64 ret = xmlTextReaderRead(reader);
65 while (ret == 1) {
66 processNode(reader);
67 ret = xmlTextReaderRead(reader);
68 }
69 xmlFreeTextReader(reader);
70 if (ret != 0) {
71 fprintf(stderr, "%s : failed to parse\n", filename);
72 }
73 } else {
74 fprintf(stderr, "Unable to open %s\n", filename);
75 }
76}
77
78int main(int argc, char **argv) {
79 if (argc != 2)
80 return(1);
81
82 /*
83 * this initialize the library and check potential ABI mismatches
84 * between the version it was compiled for and the actual shared
85 * library used.
86 */
87 LIBXML_TEST_VERSION
88
89 streamFile(argv[1]);
90
91 /*
92 * Cleanup function for the XML library.
93 */
94 xmlCleanupParser();
95 /*
96 * this is to debug memory for regression tests
97 */
98 xmlMemoryDump();
99 return(0);
100}
101
102#else
103int main(void) {
104 fprintf(stderr, "XInclude support not compiled in\n");
105 exit(1);
106}
107#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette