Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.os.linux.development.apps > #717

Re: Failure to extract information using mini-XML v2.8

From Lew Pitcher <lew.pitcher@digitalfreehold.ca>
Subject Re: Failure to extract information using mini-XML v2.8
Newsgroups comp.os.linux.development.apps
References <Sl86v.121102$nm4.66014@fx27.iad> <87lhuu8uyu.fsf@sable.mobileactivedefense.com>
Organization The Pitcher Digital Freehold
Message-ID <zqd6v.82867$f85.57@fx19.iad> (permalink)
Date 2014-04-24 15:16 -0400

Show all headers | View raw


On Thursday 24 April 2014 14:04, in comp.os.linux.development.apps, "Rainer
Weikusat" <rweikusat@mobileactivedefense.com> wrote:

> Lew Pitcher <lew.pitcher@digitalfreehold.ca> 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:
>>   <?xml version="1.0" encoding="utf-8"?><document>Hello, World</document>
> 
> [...]
> 
>>   #include <stdio.h>
>>   #include <stdlib.h>
>>
>>   #include <mxml.h>
>>
>>   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?

"interior value nodes" doesn't mean anything to me. Does that mean that
miniXML does /not/ provide a way to extract text from XML?

Anyways, since, in my code, the first argument to mxmlLoadFile() /is/ NULL,
the condition you describe doesn't seem to apply.


FWIW, I've tested this with both mxmlLoadFile() and mxmlLoadString(), and
both fail in the same manner. I ruled out mxmlGetText() as a culprit, as it
seems to work when used with mxmlNewElement(), et al. That is to say

  mxml_node_t *xml, *doc;
  const char *text;

  xml = mxmlNewXML("1.0");
  doc = mxmlNewElement(xml,"document");
  mxmlNewText(doc,0,"Hello, World");

  text = mxmlGetText(doc,NULL);

does, indeed, return a pointer to the expected "Hello, World" string.

-- 
Lew Pitcher
"In Skills, We Trust"
PGP public key available upon request

Back to comp.os.linux.development.apps | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Failure to extract information using mini-XML v2.8 Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2014-04-24 09:30 -0400
  Re: Failure to extract information using mini-XML v2.8 Rainer Weikusat <rweikusat@mobileactivedefense.com> - 2014-04-24 19:04 +0100
    Re: Failure to extract information using mini-XML v2.8 Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2014-04-24 15:16 -0400
      Re: Failure to extract information using mini-XML v2.8 Rainer Weikusat <rweikusat@mobileactivedefense.com> - 2014-04-24 20:45 +0100
        Re: Failure to extract information using mini-XML v2.8 Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2014-04-24 16:02 -0400

csiph-web