aboutsummaryrefslogtreecommitdiffstats
path: root/mxml/README
diff options
context:
space:
mode:
Diffstat (limited to 'mxml/README')
-rw-r--r--mxml/README204
1 files changed, 204 insertions, 0 deletions
diff --git a/mxml/README b/mxml/README
new file mode 100644
index 000000000..31a026649
--- /dev/null
+++ b/mxml/README
@@ -0,0 +1,204 @@
+README - 05/19/2005
+-------------------
+
+
+INTRODUCTION
+
+ This README file describes the Mini-XML library version
+ 2.2.2.
+
+ Mini-XML is a small XML parsing library that you can use to
+ read XML and XML-like data files in your application without
+ requiring large non-standard libraries. Mini-XML only
+ requires an ANSI C compatible compiler (GCC works, as do
+ most vendors' ANSI C compilers) and a "make" program.
+
+ Mini-XML provides the following functionality:
+
+ - Reading of UTF-8 and UTF-16 and writing of UTF-8
+ encoded XML files and strings.
+ - Data is stored in a linked-list tree structure,
+ preserving the XML data hierarchy.
+ - Supports arbitrary element names, attributes, and
+ attribute values with no preset limits, just available
+ memory.
+ - Supports integer, real, opaque ("cdata"), and text
+ data types in "leaf" nodes.
+ - Functions for creating and managing trees of data.
+ - "Find" and "walk" functions for easily locating and
+ navigating trees of data.
+
+ Mini-XML doesn't do validation or other types of processing
+ on the data based upon schema files or other sources of
+ definition information.
+
+
+BUILDING Mini-XML
+
+ Mini-XML comes with an autoconf-based configure script; just
+ type the following command to get things going:
+
+ ./configure
+
+ The default install prefix is /usr/local, which can be
+ overridden using the --prefix option:
+
+ ./configure --prefix=/foo
+
+ Other configure options can be found using the --help
+ option:
+
+ ./configure --help
+
+ Once you have configured the software, type "make" to do the
+ build and run the test program to verify that things are
+ working, as follows:
+
+ make
+
+ If you are using Mini-XML under Microsoft Windows with
+ Visual C++, use the included project files in the "vcnet"
+ subdirectory to build the library instead.
+
+
+INSTALLING Mini-XML
+
+ The "install" target will install Mini-XML in the lib and
+ include directories:
+
+ make install
+
+ Once you have installed it, use the "-lmxml" option to link
+ your application against it.
+
+
+DOCUMENTATION
+
+ The documentation is available in the "doc" subdirectory in
+ the files "mxml.html" (HTML) and "mxml.pdf" (PDF). You can
+ also look at the "testmxml.c" and "mxmldoc.c" source files
+ for examples of using Mini-XML.
+
+ Mini-XML provides a single header file which you include:
+
+ #include <mxml.h>
+
+ Nodes are defined by the "mxml_node_t" structure; the "type"
+ member defines the node type (element, integer, opaque,
+ real, or text) which determines which value you want to look
+ at in the "value" union. New nodes can be created using the
+ "mxmlNewElement()", "mxmlNewInteger()", "mxmlNewOpaque()",
+ "mxmlNewReal()", and "mxmlNewText()" functions. Only
+ elements can have child nodes, and the top node must be an
+ element, usually "?xml".
+
+ You load an XML file using the "mxmlLoadFile()" function:
+
+ FILE *fp;
+ mxml_node_t *tree;
+
+ fp = fopen("filename.xml", "r");
+ tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
+ fclose(fp);
+
+ Similarly, you save an XML file using the "mxmlSaveFile()"
+ function:
+
+ FILE *fp;
+ mxml_node_t *tree;
+
+ fp = fopen("filename.xml", "w");
+ mxmlSaveFile(tree, fp, MXML_NO_CALLBACK);
+ fclose(fp);
+
+ The "mxmlLoadString()", "mxmlSaveAllocString()", and
+ "mxmlSaveString()" functions load XML node trees from and
+ save XML node trees to strings:
+
+ char buffer[8192];
+ char *ptr;
+ mxml_node_t *tree;
+
+ ...
+ tree = mxmlLoadString(NULL, buffer, MXML_NO_CALLBACK);
+
+ ...
+ mxmlSaveString(tree, buffer, sizeof(buffer), MXML_NO_CALLBACK);
+
+ ...
+ ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK);
+
+ You can find a named element/node using the
+ "mxmlFindElement()" function:
+
+ mxml_node_t *node = mxmlFindElement(tree, tree, "name", "attr",
+ "value", MXML_DESCEND);
+
+ The "name", "attr", and "value" arguments can be passed as
+ NULL to act as wildcards, e.g.:
+
+ /* Find the first "a" element */
+ node = mxmlFindElement(tree, tree, "a", NULL, NULL, MXML_DESCEND);
+
+ /* Find the first "a" element with "href" attribute */
+ node = mxmlFindElement(tree, tree, "a", "href", NULL, MXML_DESCEND);
+
+ /* Find the first "a" element with "href" to a URL */
+ node = mxmlFindElement(tree, tree, "a", "href",
+ "http://www.easysw.com/~mike/mxml/",
+ MXML_DESCEND);
+
+ /* Find the first element with a "src" attribute*/
+ node = mxmlFindElement(tree, tree, NULL, "src", NULL, MXML_DESCEND);
+
+ /* Find the first element with a "src" = "foo.jpg" */
+ node = mxmlFindElement(tree, tree, NULL, "src", "foo.jpg",
+ MXML_DESCEND);
+
+ You can also iterate with the same function:
+
+ mxml_node_t *node;
+
+ for (node = mxmlFindElement(tree, tree, "name", NULL, NULL,
+ MXML_DESCEND);
+ node != NULL;
+ node = mxmlFindElement(node, tree, "name", NULL, NULL,
+ MXML_DESCEND))
+ {
+ ... do something ...
+ }
+
+ Finally, once you are done with the XML data, use the
+ "mxmlDelete()" function to recursively free the memory that
+ is used for a particular node or the entire tree:
+
+ mxmlDelete(tree);
+
+
+GETTING HELP AND REPORTING PROBLEMS
+
+ You can email me at "mxml@easysw.com" to report problems
+ and/or ask for help. Just don't expect an instant response,
+ as I get a *lot* of email...
+
+
+LEGAL STUFF
+
+ The Mini-XML library is Copyright 2003-2005 by Michael Sweet.
+
+ This library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Library General
+ Public License as published by the Free Software Foundation;
+ either version 2 of the License, or (at your option) any
+ later version.
+
+ This library is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the GNU Library General Public License for
+ more details.
+
+ You should have received a copy of the GNU Library General
+ Public License along with this library; if not, write to the
+ Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
+ 02139, USA.