xp-framework / xml
XML APIs for the XP Framework
v12.1.0
2026-06-21 16:45 UTC
Requires
- php: >=7.4.0
- xp-framework/collections: ^10.0 | ^9.0 | ^8.0
- xp-framework/core: ^12.11 | ^11.11
- xp-framework/reflection: ^3.1
Requires (Dev)
- xp-framework/test: ^2.0 | ^1.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
The xml package provides APIs to handle XML.
XML data
Most of the time, XML is used to hold data. In this case, a fully blown DOM api is too much overhead to work with the data. This is where the xml.Tree class comes in.
This example will print out a nicely formatted XML document:
use xml\{Tree, Node}; $t= new Tree('customer'); $t->root()->setAttribute('id', '6100'); $t->addChild(new Node('name', 'Timm Übercoder')); $t->addChild(new Node('email', 'uebercoder@example.com')); echo $t->getSource(INDENT_DEFAULT);
XSL Transformation
The DomXSLProcessor class uses LibXSLT and thus supports EXSLT features like user functions, callbacks, string functions, dynamic evaluation and more.
A simple example:
use xml\DomXSLProcessor; use xml\TransformerException; use util\cmd\Console; $proc= new DomXSLProcessor(); $proc->setXSLFile('test.xsl'); $proc->setXMLFile('test.xml'); try { $proc->run(); } catch (TransformerException $e) { // Handle } Console::writeLine($proc->output());
XPath queries
use xml\XPath; use util\cmd\Console; $xml= '<dialog id="file.open"> <caption>Open a file</caption> <buttons> <button name="ok"/> <button name="cancel"/> </buttons> </dialog>'; Console::writeLine((new XPath($xml))->query('/dialog/buttons/button/@name')));

