Re: Good XML Parser

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Here is the very simple way ;)

<?php

$XML=<<<XMLL
<head>
 <a href='/asas' >
   <b>First</b>
  </a>
  <a href='/bla' >
    <b class='klas' >Second</b>
  </a>
</head>
XMLL;


$X = simplexml_load_string($XML);

foreach ($X->a as $a){
	echo $a->b ."\n";
	if(  $a->b['class'] ) {
		echo 'B has class - ' .$a->b['class']."\n";
	}
}

?>





On May 12, 2008, at 1:28 PM, Waynn Lue wrote:

So if I'm looking to parse certain attributes out of an XML tree, if I
use SAX, it seems that I would need to keep track of state internally.
 E.g., if I have a tree like

<head>
 <a>
   <b></b>
  </a>
  <a>
    <b></b>
  </a>
</head>

and say I'm interested in all that's between <b> underneath any <a>,
I'd need to have a state machine that looked for an <a> followed by a
<b>.  If I'm doing that, though, it seems like I should just start
using a DOM parser instead?

Thanks for any insight,
Waynn

On Mon, May 12, 2008 at 1:29 AM, David Otton
<phpmail@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
2008/5/12 Waynn Lue <waynnlue@xxxxxxxxx>:

What's the best way to pull down XML from a URL?  fopen($URL), then
using xml_parse?  Or should I be using XML_Parser or SimpleXML?

 XML parsers fall into two general camps - DOM and SAX. DOM parsers
 represent an entire XML document as a tree, in-memory, when they are
 first instantiated. They are generally more memory-hungry and take
 longer to instantiate, but they can answer queries like "what is the
 path to this node" or "give me the siblings of this node".

SAX parsers are stream- or event-based, and are much more lightweight - they parse the XML in a JIT fashion, and can't answer much more than
 "give me the next node".

 If you just need the data, a SAX parser will probably do everything
you need. If you need the tree structure implicit in an XML document,
 use a DOM parser. Expat, which XML Parser
 (http://uk3.php.net/manual/en/book.xml.php) is based on, is a SAX
 parser. DOM XML (http://uk3.php.net/manual/en/book.domxml.php) is,
 obviously, a DOM parser. I don't know, off the top of my head, which
 camp SimpleXML falls into.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Bojan Tesanovic
http://www.carster.us/





[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux