mxml/index.html

170 lines
4.7 KiB
HTML

<HTML>
<HEAD>
<TITLE>Mini-XML Home Page</TITLE>
<STYLE><!--
H1, H2, H3, P { font-family: sans-serif; text-align: justify; }
H1.title, P.title { font-family: sans-serif; text-align: center; }
TT, PRE, PRE A:link { font-weight: bold; color: #7f0000; }
--></STYLE>
</HEAD>
<BODY>
<H1 CLASS="title" ALIGN="CENTER">Mini-XML Home Page</H1>
<P CLASS="title" ALIGN="CENTER">Current Release: v0.9 ( <A
HREF="mxml-0.9.tar.gz">download source .tar.gz 40k</A> )</P>
<H2>Introduction</H2>
<P>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.</P>
<P>Mini-XML was created to support the basic hierarchy provided
by XML and some simple data types, but doesn't do validation or
other types of processing on the data.</P>
<H2>Building Mini-XML</H2>
<P>Mini-XML comes with an autoconf-based configure script; just
type the following command to get things going:</P>
<PRE>
./configure
</PRE>
<P>The default install prefix is /usr/local, which can be
overridden using the --prefix option:</P>
<PRE>
./configure --prefix=/foo
</PRE>
<P>Once you have configured the software, type "make" to do the
build and then run the test program to verify that things are
working, as follows:</P>
<PRE>
make
./testmxml test.xml
</PRE>
<H2>Installing Mini-XML</H2>
<P>The "install" target will install Mini-XML in the lib and
include directories:</P>
<PRE>
make install
</PRE>
<P>Once you have installed it, use the "-lmxml" option to link
your application against it.</P>
<H2>Documentation</H2>
<P>The documentation is currently just in this page. At some
point I'll probably do some proper documentation, but for now
just read here and look at the <A
HREF="testmxml.c"><TT>testmxml.c</TT></A> source file for an
example of reading and printing the contents of an XML file to
stdout.</P>
<P>Mini-XML provides a single header file which you include:</P>
<PRE>
<A HREF="mxml.h">#include &lt;mxml.h></A>
</PRE>
<P>Nodes are defined by the <TT>mxml_node_t</TT> structure; the
<TT>type</TT> member defines the node type (element, integer,
opaque, real, or text) which determines which value you want to
look at in the <TT>value</TT> union. New nodes can be created
using the <TT>mxmlNewElement()</TT>, <TT>mxmlNewInteger()</TT>,
<TT>mxmlNewOpaque()</TT>, <TT>mxmlNewReal()</TT>, and
<TT>mxmlNewText()</TT> functions. Only elements can have child
nodes, and the top node must be an element, usually "?xml".</P>
<P>You load an XML file using the <TT>mxmlLoadFile()</TT> function:</P>
<PRE>
FILE *fp;
mxml_node_t *tree;
fp = fopen("filename.xml", "r");
tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
fclose(fp);
</PRE>
<P>Similarly, you save an XML file using the <TT>mxmlSaveFile()</TT>
function:</P>
<PRE>
FILE *fp;
mxml_node_t *tree;
fp = fopen("filename.xml", "w");
mxmlSaveFile(tree, fp);
fclose(fp);
</PRE>
<P>You can find a named element/node using the
<TT>mxmlFindElement()</TT> function:</P>
<PRE>
mxml_node_t *node = mxmlFindElement(tree, tree, "name");
</PRE>
<P>You can also iterate with the same function:
<PRE>
mxml_node_t *node;
for (node = mxmlFindElement(tree, tree, "name");
node != NULL;
node = mxmlFindElement(node, tree, "name"))
{
... do something ...
}
</PRE>
<P>Finally, once you are done with the XML data, use the
<TT>mxmlDelete()</TT> function to recursively free the memory
that is used for a particular node or the entire tree:</P>
<PRE>
mxmlDelete(tree);
</PRE>
<H2>Getting Help and Reporting Problems</H2>
<P>You can email me at "mxml <I>at</I> easysw <I>dot</I> com" to
report problems and/or ask for help. Just don't expect an
instant response, as I get a <I>lot</I> of email...</P>
<H2>Legal Stuff</H2>
<P>The Mini-XML library is Copyright 2003 by Michael Sweet.</P>
<P>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.</P>
<P>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.</P>
<P>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.</P>
</BODY>
</HTML>