saloonphp/xml-wrangler
XML helper for Saloon: parse XML responses into arrays/objects, map nodes to data, handle namespaces, attributes and CDATA, and build or transform XML payloads cleanly. Great for SOAP-style APIs and legacy XML integrations in Laravel/PHP.
XmlReader::load()->query()->map()).XmlApiConnector for API responses or ProductXmlReader for domain-specific queries).Query::fromArray<ProductDto>), reducing runtime errors and improving IDE support.resolve() methods). Reduces boilerplate for SOAP/XML APIs.composer require + optional service binding). No Laravel-specific dependencies beyond PHP 8.3+.each() vs. all()).first(), map(), sole()) abstract common patterns.toXmlString()) simplify troubleshooting.withNamespaces() method reduces boilerplate.SimpleXML).SimpleXML, DOMDocument, or Extenso/XML for feature parity (e.g., namespaces, generics).XmlApiConnector::resolve()).Product::all()).collect($reader->query()->map()->all())).php-xml extension (enabled by default in Laravel).veewee/xml (lightweight, ~1MB).SimpleXML/DOMDocument in a single connector/service.SimpleXML-based SOAP client to XmlWrangler + Saloon.XmlReader for API responses).XmlWriter for API outputs, reports).if (config('app.use_xml_wrangler')) {
return XmlReader::fromResponse($response)->query('//data')->all();
}
return simplexml_load_string($response->body())->data;
SimpleXML/DOMDocument in specific modules.protected $casts = ['xml_data' => XmlReader::class]).xml:long in PostgreSQL).saloonphp/xml-wrangler via Composer.php-xml extension (if not already active).SimpleXML in HTTP connectors (e.g., Saloon resolve() methods).XmlWriter to API response generation (e.g., toXml() methods).app.bind(XmlReader::class, ...)).XmlReader::macro('findBySku', ...)).query()->map()) replaces verbose SimpleXML loops.XmlApiConnector).Query::fromArray<ProductDto>).SimpleXML/DOMDocument.dd($reader->toXmlString()) to inspect parsed XML.Saloon::log()->info('XPath Query', ['query' => $query, 'result' => $reader->query($query)->all()]);
if (!$reader->query('//root')->first()) { ... }).first()/sole() results.$reader->rewind()).How can I help you explore Laravel packages today?