mirror of
https://github.com/michaelrsweet/mxml.git
synced 2024-11-24 11:25:30 +00:00
173 lines
4.9 KiB
HTML
173 lines
4.9 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
|
<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, PRE A:visited { font-weight: bold; color: #7f0000; }
|
|
--></STYLE>
|
|
</HEAD>
|
|
<BODY>
|
|
|
|
<P CLASS="title" ALIGN="CENTER"><A HREF="../index.html">Back to Home Page</A></P>
|
|
|
|
<H1 CLASS="title" ALIGN="CENTER">Mini-XML Home Page</H1>
|
|
|
|
<P CLASS="title" ALIGN="CENTER">Current Release: v0.91 ( <A
|
|
HREF="mxml-0.91.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 <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>
|