Re: simple xml api

From: Date: Thu, 30 Jan 2003 21:12:11 +0000
Subject: Re: simple xml api
References: 1  Groups: php.xml.dev 
Request: Send a blank email to php-xml-dev+get-7@lists.php.net to get a copy of this message
I like the ideas around here a lot... I'm don't know too much about C, so unfortunately I won't be able to help out to much with coding the new extension, but I'd like to provide some feedback and help writing documentation (got doc-karma anyway...). One thing is that I'd hope the new extension would be called xml as opposite to domxml. Especially if it's going to be an extension comprising all the different stuff. I have written PHP scripts that use the sax extension to build a DOM-kind of tree that's (at least in my view) really easy to use. It uses some kind of nodes and lots of arrays and stuff... If you're interested, I could post some code. Regards, Dirkjan "Sterling Hughes" <sterling@bumblebury.com> wrote in message news:1043947104.15187.980.camel@hasele... > Sam Ruby sent me the following URL: > http://dev2dev.bea.com/articlesnews/discussion/thread.jsp?thread=JSchneider_ XML > > It looks really neat, and much in the PHP way of doing things. Take the > following XML document, and I'll show you how easy parsing it is with > the Simple API proposed above (ported slightly to PHP). > > Let's say we're a bar, and we have a list in XML of the different beers > on tap. > > <beers> > <beer> > <name>Becks</name> > <nation>Germany</nation> > </beer> > <beer> > <name>Heineken</name> > <nation>Netherlands</nation> > </beer> > <beer> > <name>Hefeweißer</name> > <nation>Germany</name> > </beer> > <beer> > <name>Samuel Adams</name> > <nation>USA</nation> > </beer> > <beer> > <name>Coors</name> > <nation>Not surprisingly, no one claims ownership</nation> > </beer> > <beer> > <name>Budweiser</name> > <nation>Germany</name> > </beer> > </beers> > > <?php > // $file contains the xml above > $tap = new Simple_XML($file); > foreach ($tap->beers as $beer) { > var_dump($beer->name); > // string "Name of Beer" > } > > $nations = array_unique($tap->range($tap->beers, "nation")); > // All the represented nations in the file > > $germanBeers = $tap->search($tap->beers, > create_function('if ($beer->nation == "Germany") return 1; return 0;') > ); > > // you can also query using Xpath documents > > var_dump($tap->beers[0]->name); > // string (5) "Becks" > > // Modifying documents > $tap->beers[0]->name = "Killians Red"; > $tap->beers[0]->nation = "Ireland"; > > // Add a meta data element, and set the various data > foreach ($tap->beers as $beer) { > $beer->metadata->type = "Heavy"; > $beer->metadata->audience = "People with chest hair"; > > // $distributors is another XML document that we now > // merge with the current document > $beer->metadata->distributors = $distributors->list; > > $tasty = $beer->name == "Coors" ? "No!" : "Yes"; > > $beer->metadata->attributes = <<<ASSIGN_XML > <attribute> > <tasty>$tasty</tasty> > </attribute> > <attribute> > <filling>yes</filling> > </attribute> > ASSIGN_XML; > } > ?> > > To me, this just seems like the PHP5 way of doing XML. Simple, Elegant > and Efficient. We could of course provide DOM and SAX for the purists > (SAX is also better for large files), and people using XSLT. However, I > think this API just maps itself to the problem domain perfectly (and > could easily be implemented on top of libxml). > > Thoughts? > > -Sterling > > PS: Yes, I do know xml_parse_into_struct(). This is different. > > -- > "First they ignore you, then they laugh at you, > then they fight you, then you win." > - Gandhi >

« previous php.xml.dev (#7) next »