PHP XML Tree Reference
SimpleXML and DOM expose different tree-oriented interfaces. Pick one from the navigation and modification operations your import needs.
How it works
Both APIs still need bounded input and a controlled parser configuration. Accessor convenience does not validate required fields or make an external entity safe. SimpleXML nodes often need explicit scalar conversion; DOM/XPath needs deliberate namespace handling. Keep parser diagnostics private and restore global libxml error-state choices after a scoped import.
Run it locally
Run this complete source locally with PHP 8.2 or newer. Save it using the filename shown and run the command below. PHP is not currently available in Bhylu’s browser playground. Apache and MySQL are not needed for an ordinary CLI example.
php -l ref-xml-tree.php
php ref-xml-tree.phpDownload this source as a local PHP lab file. Keep lab files separate from the Bhylu project and production data.
Example
<?php
declare(strict_types=1);
$xml = new SimpleXMLElement("<items><item>Rake</item></items>");
echo (string)$xml->item, "\n";
$document = dom_import_simplexml($xml);
echo $document->nodeName, "\n";
Expected result
Rake
itemsThe same controlled tree is observed through two interfaces. Importing into DOM does not transform untrusted XML into approved application data. The example contains no DTD, network resource or unbounded external document, so those additional production parser decisions remain explicit rather than silently exercised.
Contracts to check
| API or term | Important boundary |
|---|---|
| simplexml_load_string, simplexml_load_file | Control parser flags, source size and error results. |
| SimpleXMLElement attributes, children, xpath | Understand namespace and scalar-conversion contracts. |
| asXML, addChild, addAttribute | Output encoding and structural mutation are distinct operations. |
| DOMDocument, DOMXPath, dom_import_simplexml | Choose document/query operations deliberately. |
Related API names
This alphabetic inventory helps locate related calls. Availability was checked in the review runtime; it is not a recommendation to use every API or a claim that every overload/function was executed. Read the official entry for version, extension, failure and security details.
| Name | Review-runtime status |
|---|---|
__construct() | Class method in the review runtime |
__tostring() | Not available in this review runtime; check version and extension requirements |
addAttribute() | Class method in the review runtime |
addChild() | Class method in the review runtime |
asXML() | Class method in the review runtime |
attributes() | Class method in the review runtime |
children() | Class method in the review runtime |
count() | Class method in the review runtime |
current() | Class method in the review runtime |
getchildren() | Not available in this review runtime; check version and extension requirements |
getDocNamespaces() | Class method in the review runtime |
getName() | Class method in the review runtime |
getNamespaces() | Class method in the review runtime |
haschildren() | Not available in this review runtime; check version and extension requirements |
key() | Class method in the review runtime |
next() | Class method in the review runtime |
registerXPathNamespace() | Class method in the review runtime |
rewind() | Class method in the review runtime |
saveXML() | Class method in the review runtime |
simplexml_import_dom() | Available in the PHP review runtime |
simplexml_load_file() | Available in the PHP review runtime |
simplexml_load_string() | Available in the PHP review runtime |
valid() | Class method in the review runtime |
xpath() | Class method in the review runtime |
Check the official PHP manual for detailed version and API contracts.