1
/*****************************************************************
4
* Copyright 1999, Clark Cooper
7
* This program is free software; you can redistribute it and/or
8
* modify it under the terms of the license contained in the
9
* COPYING file that comes with the expat distribution.
11
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
12
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
14
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
15
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
16
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
17
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19
* Read an XML document from standard input and print an element
20
* outline on standard output.
34
start(void *data, const char *el, const char **attr) {
37
for (i = 0; i < Depth; i++)
42
for (i = 0; attr[i]; i += 2) {
43
printf(" %s='%s'", attr[i], attr[i + 1]);
48
} /* End of start handler */
51
end(void *data, const char *el) {
53
} /* End of end handler */
56
main(int argc, char *argv[]) {
57
XML_Parser p = XML_ParserCreate(NULL);
59
fprintf(stderr, "Couldn't allocate memory for parser\n");
63
XML_SetElementHandler(p, start, end);
69
len = fread(Buff, 1, BUFFSIZE, stdin);
71
fprintf(stderr, "Read error\n");
76
if (! XML_Parse(p, Buff, len, done)) {
77
fprintf(stderr, "Parse error at line %d:\n%s\n",
78
XML_GetCurrentLineNumber(p),
79
XML_ErrorString(XML_GetErrorCode(p)));