Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!news-1.dfn.de!news.dfn.de!news.informatik.hu-berlin.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Rainer Weikusat Newsgroups: comp.os.linux.development.apps Subject: Re: Failure to extract information using mini-XML v2.8 Date: Thu, 24 Apr 2014 20:45:22 +0100 Lines: 62 Message-ID: <87ha5i8qb1.fsf@sable.mobileactivedefense.com> References: <87lhuu8uyu.fsf@sable.mobileactivedefense.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: individual.net 21fQzDTrOe4qOCMBV7vx6QFYB28OBmTBiYSHMYQfq8cLCRvDo= Cancel-Lock: sha1:uJwE6iNZyDHNH9f+Q8dUDjkess8= sha1:2Lw7h3l5qAnDej5ERhzdgedkjTo= User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) Xref: csiph.com comp.os.linux.development.apps:718 Lew Pitcher writes: > On Thursday 24 April 2014 14:04, in comp.os.linux.development.apps, "Rainer > Weikusat" wrote: > >> Lew Pitcher writes: >>> While using miniXML v2.8 (http://www.msweet.org/projects.php?Z3) to read >>> and process an XML document in a small C program, I came across a problem >>> that I cannot surmount. >> >> [...] >> >>> For my demo, I have a dead simple XML document: >>> Hello, World >> >> [...] >> >>> #include >>> #include >>> >>> #include >>> >>> int main(void) >>> { >>> int rc = EXIT_FAILURE; >>> >>> mxml_node_t *xml, *doc; >>> const char *text; >>> >>> xml = mxmlLoadFile(NULL,stdin,MXML_TEXT_CALLBACK); >>> doc = >>> mxmlFindElement(xml,xml,"document",NULL,NULL,MXML_DESCEND_FIRST); >>> text = mxmlGetText(doc,NULL); >>> >>> if (text) >>> { >>> printf("Success: \"%s\"\n",text); >>> rc = EXIT_SUCCESS; >>> } >>> else puts("Fail"); >>> >>> return rc; >>> } >> >> As determined by examining the mini-XML (2.8) code and testing, >> mxmlLoadFile (or, more correctly, the corresponding backend routine) >> will only create 'interior value nodes' when the first argument to >> mxmlLoadFile is not null. > > Pardon my reaction, but.... so? So it builds a tree structure of XML elements but doesn't include anything which is not an XML element in that (because the type is always MXML_IGNORE). > "interior value nodes" doesn't mean anything to me. Does that mean that > miniXML does /not/ provide a way to extract text from XML? I've changed the code such that it doesn't force MXML_IGNORE. In this case, it creates an empty 'text node' as child of the tree root and two 'text nodes' as children of the document node, the first containing the string 'Hello,' and the second the string 'World'. That's presumably useful for something but likely not for your use case.