Easily Read and Write XML in PHP
Last updated on by Paul Redmond
XML Wrangler has been built with developer experience in mind - you can read any type of XML file, even with complex namespaces and even large XML files. It will also throw exceptions if the XML is invalid!
XML Wrangler is a simplistic PHP library designed to make reading and writing XML easy. Using familiar Laravel-like methods, this package is framework-agnostic and can be used in any PHP project (>=v8.1
). XML Wrangler is jam-packed with features that make working with XML much more enjoyable than the out-of-the-box PHP experience:
- Dot Notation: Using dot-notation to query an XML document
- Low memory usage: XML Wrangler can handle reading large XML files
-
Laravel-like: methods that you can use like
sole
,first
,firstOrFail
,collect
, etc. - Lazy methods: Read massive XML files and loop over each node in a loop
- XML Generation: Write XML using arrays
- XML Parsing: Provides functionality to parse XML documents.
-
DTOs: Use the
Element
DTO element to define attributes and namespaces - Error Handling: It has proper error handling unlike SimpleXML
- XPath Queries: Supports XPath queries to extract data from XML.
- Editing and Manipulation: Enables the modification and manipulation of XML data.
- Simple API: Offers a straightforward API for working with XML.
- Namespace Support: Handles XML namespaces.
You will want to check out the readme to learn about everything you can do with this package, but here's an example of reading XML:
<?php use Saloon\XmlWrangler\XmlReader; $reader = XmlReader::fromString($xml); // Retrieve all values as one simple array$reader->values();// ['breakfast_menu' => [['name' => '...'], ['name' => '...'], ...] // Use dot-notation to find a specific element$reader->value('food.0')->sole();// ['name' => 'Belgian Waffles', 'price' => '$5.95', ...] // Use the element method to get a simple Element DTO containing attributes and content$reader->element('food.0')->sole(); // Element::class // Use XPath to query the XML$reader->xpathValue('//food[@bestSeller="true"]/name')->get();// ['Belgian Waffles', 'Berry-Berry Belgian Waffles']
To get started with this package, you can get full installation and usage instructions on GitHub at saloonphp/xml-wrangler on GitHub.