/usr/share/doc/libxml2-devel/examples
NameSizeModeActions
examples.xml321570644editdlrm
examples.xsl72320644editdlrm
index.html329200644editdlrm
index.py92090644editdlrm
io1.c37530644editdlrm
io1.res1650644editdlrm
io2.c11820644editdlrm
io2.res430644editdlrm
Makefile.am40930644editdlrm
Makefile.in333090644editdlrm
parse1.c13000644editdlrm
parse2.c19670644editdlrm
parse3.c15060644editdlrm
parse4.c35450644editdlrm
reader1.c25300644editdlrm
reader1.res1490644editdlrm
reader2.c31330644editdlrm
reader3.c29470644editdlrm
reader3.res3600644editdlrm
reader4.c31280644editdlrm
reader4.res720644editdlrm
test1.xml70644editdlrm
test2.xml2270644editdlrm
test3.xml8330644editdlrm
testWriter.c385030644editdlrm
tree1.c22450644editdlrm
tree1.res1210644editdlrm
tree2.c34150644editdlrm
tree2.res4530644editdlrm
tst.xml910644editdlrm
writer.xml5440644editdlrm
xpath1.c66240644editdlrm
xpath1.res1140644editdlrm
xpath2.c53300644editdlrm
xpath2.res7570644editdlrm
Edit: /usr/share/doc/libxml2-devel/examples/reader3.c (2947B)
/** * section: xmlReader * synopsis: Show how to extract subdocuments with xmlReader * purpose: Demonstrate the use of xmlTextReaderPreservePattern() * to parse an XML file with the xmlReader while collecting * only some subparts of the document. * (Note that the XMLReader functions require libxml2 version later * than 2.6.) * usage: reader3 * test: reader3 > reader3.tmp && diff reader3.tmp $(srcdir)/reader3.res * author: Daniel Veillard * copy: see Copyright for the status of this software. */ #include #include #if defined(LIBXML_READER_ENABLED) && defined(LIBXML_PATTERN_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) /** * streamFile: * @filename: the file name to parse * * Parse and print information about an XML file. * * Returns the resulting doc with just the elements preserved. */ static xmlDocPtr extractFile(const char *filename, const xmlChar *pattern) { xmlDocPtr doc; xmlTextReaderPtr reader; int ret; /* * build an xmlReader for that file */ reader = xmlReaderForFile(filename, NULL, 0); if (reader != NULL) { /* * add the pattern to preserve */ if (xmlTextReaderPreservePattern(reader, pattern, NULL) < 0) { fprintf(stderr, "%s : failed add preserve pattern %s\n", filename, (const char *) pattern); } /* * Parse and traverse the tree, collecting the nodes in the process */ ret = xmlTextReaderRead(reader); while (ret == 1) { ret = xmlTextReaderRead(reader); } if (ret != 0) { fprintf(stderr, "%s : failed to parse\n", filename); xmlFreeTextReader(reader); return(NULL); } /* * get the resulting nodes */ doc = xmlTextReaderCurrentDoc(reader); /* * Free up the reader */ xmlFreeTextReader(reader); } else { fprintf(stderr, "Unable to open %s\n", filename); return(NULL); } return(doc); } int main(int argc, char **argv) { const char *filename = "test3.xml"; const char *pattern = "preserved"; xmlDocPtr doc; if (argc == 3) { filename = argv[1]; pattern = argv[2]; } /* * 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 doc = extractFile(filename, (const xmlChar *) pattern); if (doc != NULL) { /* * ouptut the result. */ xmlDocDump(stdout, doc); /* * don't forget to free up the doc */ xmlFreeDoc(doc); } /* * Cleanup function for the XML library. */ xmlCleanupParser(); /* * this is to debug memory for regression tests */ xmlMemoryDump(); return(0); } #else int main(void) { fprintf(stderr, "Reader, Pattern or output support not compiled in\n"); exit(1); } #endif