Unicode output issues. Comment/declaration handling fixes. Add mxmldoc to build.web
parent
bfc6a08cde
commit
438ded6568
@ -1,174 +1,199 @@ |
||||
<!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.93 [ <A |
||||
HREF="mxml-0.93.tar.gz">Download Source (.tar.gz 40k)</A> | |
||||
<A HREF="CHANGES">View Change Log</A> ]</P> |
||||
|
||||
<H2>Introduction</H2> |
||||
|
||||
<P>Mini-XML is a small XML parsing library that you can use to |
||||
<!DOCTYPE html |
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
||||
<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, tt a:link, tt 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.93 [ <a |
||||
href="mxml-0.93.tar.gz">Download Source (.tar.gz 40k)</a> | |
||||
<a href="CHANGES">View Change Log</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> |
||||
ANSI C compilers) and a "make" program.</p> |
||||
|
||||
<P>Mini-XML was created to support the basic hierarchy provided |
||||
<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> |
||||
other types of processing on the data.</p> |
||||
|
||||
<H2>Building Mini-XML</H2> |
||||
<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> |
||||
<p>Mini-XML comes with an autoconf-based configure script; just |
||||
type the following command to get things going:</p> |
||||
|
||||
<PRE> |
||||
<pre> |
||||
./configure |
||||
</PRE> |
||||
</pre> |
||||
|
||||
<P>The default install prefix is /usr/local, which can be |
||||
overridden using the --prefix option:</P> |
||||
<p>The default install prefix is /usr/local, which can be |
||||
overridden using the --prefix option:</p> |
||||
|
||||
<PRE> |
||||
<pre> |
||||
./configure --prefix=/foo |
||||
</PRE> |
||||
</pre> |
||||
|
||||
<P>Once you have configured the software, type "make" to do the |
||||
<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> |
||||
working, as follows:</p> |
||||
|
||||
<PRE> |
||||
<pre> |
||||
make |
||||
./testmxml test.xml |
||||
</PRE> |
||||
</pre> |
||||
|
||||
<H2>Installing Mini-XML</H2> |
||||
<h2>Installing Mini-XML</h2> |
||||
|
||||
<P>The "install" target will install Mini-XML in the lib and |
||||
include directories:</P> |
||||
<p>The "install" target will install Mini-XML in the lib and |
||||
include directories:</p> |
||||
|
||||
<PRE> |
||||
<pre> |
||||
make install |
||||
</PRE> |
||||
</pre> |
||||
|
||||
<P>Once you have installed it, use the "-lmxml" option to link |
||||
your application against it.</P> |
||||
<p>Once you have installed it, use the "-lmxml" option to link |
||||
your application against it.</p> |
||||
|
||||
<H2>Documentation</H2> |
||||
<h2>Documentation</h2> |
||||
|
||||
<P>The documentation is currently just in this page. At some |
||||
<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 |
||||
just read here and look at the <tt><a |
||||
href="testmxml.c">testmxml.c</a></tt> source file for an |
||||
example of reading and printing the contents of an XML file to |
||||
stdout.</P> |
||||
stdout.</p> |
||||
|
||||
<P>Mini-XML provides a single header file which you include:</P> |
||||
<p>Mini-XML provides a single header file which you include:</p> |
||||
|
||||
<PRE> |
||||
<A HREF="mxml.h">#include <mxml.h></A> |
||||
</PRE> |
||||
<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, |
||||
<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> |
||||
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> |
||||
<p>You load an XML file using the <tt>mxmlLoadFile()</tt> function:</p> |
||||
|
||||
<PRE> |
||||
<pre> |
||||
FILE *fp; |
||||
mxml_node_t *tree; |
||||
|
||||
fp = fopen("filename.xml", "r"); |
||||
tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK); |
||||
fclose(fp); |
||||
</PRE> |
||||
</pre> |
||||
|
||||
<P>Similarly, you save an XML file using the <TT>mxmlSaveFile()</TT> |
||||
function:</P> |
||||
<p>Similarly, you save an XML file using the <tt>mxmlSaveFile()</tt> |
||||
function:</p> |
||||
|
||||
<PRE> |
||||
<pre> |
||||
FILE *fp; |
||||
mxml_node_t *tree; |
||||
|
||||
fp = fopen("filename.xml", "w"); |
||||
mxmlSaveFile(tree, fp); |
||||
fclose(fp); |
||||
</PRE> |
||||
</pre> |
||||
|
||||
<P>You can find a named element/node using the |
||||
<TT>mxmlFindElement()</TT> function:</P> |
||||
<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> |
||||
<pre> |
||||
mxml_node_t *node = mxmlFindElement(tree, tree, "name", "attr", |
||||
"value", MXML_DESCEND); |
||||
</pre> |
||||
|
||||
<P>You can also iterate with the same function: |
||||
<p>The <tt>name</tt>, <tt>attr</tt>, and <tt>value</tt> |
||||
arguments can be passed as <tt>NULL</tt> to act as wildcards, |
||||
e.g.:</p> |
||||
|
||||
<PRE> |
||||
<pre> |
||||
/* 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); |
||||
</pre> |
||||
|
||||
<p>You can also iterate with the same function:</p> |
||||
|
||||
<pre> |
||||
mxml_node_t *node; |
||||
|
||||
for (node = mxmlFindElement(tree, tree, "name"); |
||||
for (node = mxmlFindElement(tree, tree, "name", NULL, NULL, MXML_DESCEND); |
||||
node != NULL; |
||||
node = mxmlFindElement(node, tree, "name")) |
||||
node = mxmlFindElement(node, tree, "name", NULL, NULL, MXML_DESCEND)) |
||||
{ |
||||
... do something ... |
||||
} |
||||
</PRE> |
||||
</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> |
||||
<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> |
||||
<pre> |
||||
mxmlDelete(tree); |
||||
</PRE> |
||||
</pre> |
||||
|
||||
<H2>Getting Help and Reporting Problems</H2> |
||||
<h2>Getting Help and Reporting Problems</h2> |
||||
|
||||
<P>You can email me at "mxml <I>at</I> easysw <I>dot</I> com" to |
||||
<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> |
||||
instant response, as I get a <i>lot</i> of email...</p> |
||||
|
||||
<H2>Legal Stuff</H2> |
||||
<h2>Legal Stuff</h2> |
||||
|
||||
<P>The Mini-XML library is Copyright 2003 by Michael Sweet.</P> |
||||
<p>The Mini-XML library is Copyright 2003 by Michael Sweet.</p> |
||||
|
||||
<P>This library is free software; you can redistribute it |
||||
<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> |
||||
later version.</p> |
||||
|
||||
<P>This library is distributed in the hope that it will be |
||||
<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> |
||||
more details.</p> |
||||
|
||||
<P>You should have received a copy of the GNU Library General |
||||
<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> |
||||
02139, USA.</p> |
||||
|
||||
</BODY> |
||||
</HTML> |
||||
</body> |
||||
</html> |
||||
|
Loading…
Reference in new issue