From 2339ba02410df6f0898231740a4d96ad97efadf2 Mon Sep 17 00:00:00 2001 From: Hannes Magnusson Date: Mon, 24 Dec 2007 13:17:58 +0000 Subject: [PATCH] MFB: Upgrade to the new-reference-structure - (Created missing setup sections in setup.xml, if any) - Moved the intro to book.xml - Changed the intro ID from .intro to intro. - Created empty constants.xml appendix - Moved the examples into its own chapter NOTE: The chapter ID is simplexml.examples, the old simplexml.examples is now simplexml.examples-basic - Moved the requirement section and the configure entity to setup.xml git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@248929 c90b9560-bf6c-de11-be94-00142212c4b1 --- reference/simplexml/book.xml | 47 +++++ reference/simplexml/constants.xml | 29 +++ reference/simplexml/examples.xml | 299 +++++++++++++++++++++++++++++ reference/simplexml/reference.xml | 305 +----------------------------- reference/simplexml/setup.xml | 56 ++++++ 5 files changed, 436 insertions(+), 300 deletions(-) create mode 100644 reference/simplexml/book.xml create mode 100755 reference/simplexml/constants.xml create mode 100644 reference/simplexml/examples.xml create mode 100644 reference/simplexml/setup.xml diff --git a/reference/simplexml/book.xml b/reference/simplexml/book.xml new file mode 100644 index 0000000000..05de245f15 --- /dev/null +++ b/reference/simplexml/book.xml @@ -0,0 +1,47 @@ + + + + + + + SimpleXML + + + + &reftitle.intro; + + The SimpleXML extension provides a very simple and easily usable + toolset to convert XML to an object that can be processed with + normal property selectors and array iterators. + + + + + &reference.simplexml.setup; + &reference.simplexml.constants; + &reference.simplexml.examples; + &reference.simplexml.reference; + + + + + diff --git a/reference/simplexml/constants.xml b/reference/simplexml/constants.xml new file mode 100755 index 0000000000..5542f0db03 --- /dev/null +++ b/reference/simplexml/constants.xml @@ -0,0 +1,29 @@ + + + + + &reftitle.constants; + &no.constants; + + + + diff --git a/reference/simplexml/examples.xml b/reference/simplexml/examples.xml new file mode 100644 index 0000000000..7a4bf63e69 --- /dev/null +++ b/reference/simplexml/examples.xml @@ -0,0 +1,299 @@ + + + + + &reftitle.examples; +
+ + Many examples in this reference require an XML string. Instead of + repeating this string in every example, we put it into a file which + we include in each example. This included file is shown in the + following example section. Alternatively, you could create an XML + document and read it with simplexml_load_file. + + + + Include file example.php with XML string + + + + + PHP: Behind the Parser + + + Ms. Coder + Onlivia Actora + + + Mr. Coder + El ActÓr + + + + So, this language. It's like, a programming language. Or is it a + scripting language? All is revealed in this thrilling horror spoof + of a documentary. + + + PHP solves all my web problems + + 7 + 5 + + +XML; +?> +]]> + + + + + The simplicity of SimpleXML appears most clearly when one extracts + a string or number from a basic XML document. + + Getting <literal><plot></literal> + movie[0]->plot; // "So this language. It's like..." +?> +]]> + + + + + Accessing elements within an XML document that contain characters not permitted under + PHP's naming convention (e.g. the hyphen) can be accomplished by encapsulating the + element name within braces and the apostrophe. + + Getting <literal><line></literal> + +movie->{'great-lines'}->line; // "PHP solves all my web problems" +?> +]]> + + + + + + Accessing non-unique elements in SimpleXML + + When multiple instances of an element exist as children of + a single parent element, normal iteration techniques apply. + + + node, we echo a separate . */ +foreach ($xml->movie as $movie) { + echo $movie->plot, '
'; +} + +?> +]]> +
+
+
+ + + Using attributes + + So far, we have only covered the work of reading element names + and their values. SimpleXML can also access element attributes. + Access attributes of an element just as you would elements + of an array. + + + nodes of the first movie. + * Output the rating scale, too. */ +foreach ($xml->movie[0]->rating as $rating) { + switch((string) $rating['type']) { // Get attributes as element indices + case 'thumbs': + echo $rating, ' thumbs up'; + break; + case 'stars': + echo $rating, ' stars'; + break; + } +} +?> +]]> + + + + + + Comparing Elements and Attributes with Text + + To compare an element or attribute with a string or pass it into a + function that requires a string, you must cast it to a string using + (string). Otherwise, PHP treats the element as an object. + + movie->title == 'PHP: Behind the Parser') { + print 'My favorite movie.'; +} + +htmlentities((string) $xml->movie->title); +?> +]]> + + + + + + Using XPath + + SimpleXML includes built-in XPath support. + To find all <character> elements: + + +xpath('//character') as $character) { + echo $character->name, 'played by ', $character->actor, '
'; +} +?> +]]> +
+ + '//' serves as a wildcard. To specify absolute + paths, omit one of the slashes. + +
+
+ + + Setting values + + Data in SimpleXML doesn't have to be constant. The object allows + for manipulation of all of its elements. + + +movie[0]->characters->character[0]->name = 'Miss Coder'; + +echo $xml->asXML(); +?> +]]> + + + The above code will output a new XML document, just like the original, + except that the new XML will change Ms. Coder to Miss Coder. + + + + + + Adding elements and attributes + + Since PHP 5.1.3, SimpleXML has had the ability to easily add children and + attributes. + + +movie[0]->characters->addChild('character'); +$character->addChild('name', 'Mr. Parser'); +$character->addChild('actor', 'John Doe'); + +$rating = $xml->movie[0]->addChild('rating', 'PG'); +$rating->addAttribute('type', 'mpaa'); + +echo $xml->asXML(); +?> +]]> + + + The above code will output an XML document based on the original but + having a new character and rating. + + + + + + DOM Interoperability + + PHP has a mechanism to convert XML nodes between SimpleXML + and DOM formats. This example shows how one might change + a DOM element to SimpleXML. + + +loadXML('blah'); +if (!$dom) { + echo 'Error while parsing the document'; + exit; +} + +$s = simplexml_import_dom($dom); + +echo $s->book[0]->title; +?> +]]> + + + +
+
+ + + diff --git a/reference/simplexml/reference.xml b/reference/simplexml/reference.xml index 9634e343ba..580e6341e7 100644 --- a/reference/simplexml/reference.xml +++ b/reference/simplexml/reference.xml @@ -1,308 +1,13 @@ - - - + - - SimpleXML functions - SimpleXML + + SimpleXML functions - -
- &reftitle.intro; - - The SimpleXML extension provides a very simple and easily usable - toolset to convert XML to an object that can be processed with - normal property selectors and array iterators. - -
- -
- &reftitle.required; - - The SimpleXML extension requires PHP 5. - -
+ &reference.simplexml.entities.functions; - &reference.simplexml.configure; - -
- &reftitle.examples; - - Many examples in this reference require an XML string. Instead of - repeating this string in every example, we put it into a file which - we include in each example. This included file is shown in the - following example section. Alternatively, you could create an XML - document and read it with simplexml_load_file. - - - - Include file example.php with XML string - - - - - PHP: Behind the Parser - - - Ms. Coder - Onlivia Actora - - - Mr. Coder - El ActÓr - - - - So, this language. It's like, a programming language. Or is it a - scripting language? All is revealed in this thrilling horror spoof - of a documentary. - - - PHP solves all my web problems - - 7 - 5 - - -XML; -?> -]]> - - - - - The simplicity of SimpleXML appears most clearly when one extracts - a string or number from a basic XML document. - - Getting <literal><plot></literal> - -$xml = new SimpleXMLElement($xmlstr); - -echo $xml->movie[0]->plot; // "So this language. It's like..." -?> -]]> - - - - - Accessing elements within an XML document that contain characters not permitted under - PHP's naming convention (e.g. the hyphen) can be accomplished by encapsulating the - element name within braces and the apostrophe. - - Getting <literal><line></literal> - -movie->{'great-lines'}->line; // "PHP solves all my web problems" -?> -]]> - - - - - - Accessing non-unique elements in SimpleXML - - When multiple instances of an element exist as children of - a single parent element, normal iteration techniques apply. - - - node, we echo a separate . */ -foreach ($xml->movie as $movie) { - echo $movie->plot, '
'; -} - -?> -]]> -
-
-
- - - Using attributes - - So far, we have only covered the work of reading element names - and their values. SimpleXML can also access element attributes. - Access attributes of an element just as you would elements - of an array. - - - nodes of the first movie. - * Output the rating scale, too. */ -foreach ($xml->movie[0]->rating as $rating) { - switch((string) $rating['type']) { // Get attributes as element indices - case 'thumbs': - echo $rating, ' thumbs up'; - break; - case 'stars': - echo $rating, ' stars'; - break; - } -} -?> -]]> - - - - - - Comparing Elements and Attributes with Text - - To compare an element or attribute with a string or pass it into a - function that requires a string, you must cast it to a string using - (string). Otherwise, PHP treats the element as an object. - - movie->title == 'PHP: Behind the Parser') { - print 'My favorite movie.'; -} - -htmlentities((string) $xml->movie->title); -?> -]]> - - - - - - Using XPath - - SimpleXML includes built-in XPath support. - To find all <character> elements: - - -xpath('//character') as $character) { - echo $character->name, 'played by ', $character->actor, '
'; -} -?> -]]> -
- - '//' serves as a wildcard. To specify absolute - paths, omit one of the slashes. - -
-
- - - Setting values - - Data in SimpleXML doesn't have to be constant. The object allows - for manipulation of all of its elements. - - -movie[0]->characters->character[0]->name = 'Miss Coder'; - -echo $xml->asXML(); -?> -]]> - - - The above code will output a new XML document, just like the original, - except that the new XML will change Ms. Coder to Miss Coder. - - - - - - Adding elements and attributes - - Since PHP 5.1.3, SimpleXML has had the ability to easily add children and - attributes. - - -movie[0]->characters->addChild('character'); -$character->addChild('name', 'Mr. Parser'); -$character->addChild('actor', 'John Doe'); - -$rating = $xml->movie[0]->addChild('rating', 'PG'); -$rating->addAttribute('type', 'mpaa'); - -echo $xml->asXML(); -?> -]]> - - - The above code will output an XML document based on the original but - having a new character and rating. - - - - - - DOM Interoperability - - PHP has a mechanism to convert XML nodes between SimpleXML - and DOM formats. This example shows how one might change - a DOM element to SimpleXML. - - -loadXML('blah'); -if (!$dom) { - echo 'Error while parsing the document'; - exit; -} - -$s = simplexml_import_dom($dom); - -echo $s->book[0]->title; -?> -]]> - - - -
-
- -&reference.simplexml.entities.functions; - -
+ + + &reftitle.setup; + + +
+ &reftitle.required; + + The SimpleXML extension requires PHP 5. + +
+ + + + &reference.simplexml.configure; + + + +
+ &reftitle.runtime; + &no.config; +
+ + + +
+ &reftitle.resources; + &no.resource; +
+ + +
+ + +