XML1 is another popular format for serializing or exchanging structured data.
XML Decoding
You can decode an XML string into an XML object with the xml_decode() function.
Use the xml_xpath() function to extract values with XPath2 queries.
{% set string_of_xml =
"<response>
<client_id>1</client_id>
<invoice_id>123</invoice_id>
</response>"
-%}
{% set xml = xml_decode(string_of_xml) %}
{% set client_id = xml_xpath(xml, '//client_id')|first %}
{% set invoice_id = xml_xpath(xml, '//invoice_id')|first %}
Client ID: {{client_id}}
Invoice ID: {{invoice_id}}
Client ID: 1
Invoice ID: 123
XML Namespaces
You can define an XML namespace with the xml_xpath_ns() function:
{% set string_of_xml =
"<response xmlns=\"http://www.example.com/api/\">
<client_id>1</client_id>
<invoice_id>123</invoice_id>
</response>"
-%}
{% set xml = xml_decode(string_of_xml) %}
{% set xml = xml_xpath_ns(xml, 'ns', 'http://www.example.com/api/') %}
{% set client_id = xml_xpath(xml, '//ns:client_id')|first %}
{% set invoice_id = xml_xpath(xml, '//ns:invoice_id')|first %}
Client ID: {{client_id}}
Invoice ID: {{invoice_id}}
Client ID: 1
Invoice ID: 123
XML Encoding
You can encode an object as XML with the xml_encode() function:
{% set string_of_xml =
"<response xmlns=\"http://www.example.com/api/\">
<client_id>1</client_id>
<invoice_id>123</invoice_id>
</response>"
-%}
{% set xml = xml_decode(string_of_xml) %}
{{xml_encode(xml.client_id)}}
<client_id>1</client_id>
References
-
Wikipedia: XML - https://en.wikipedia.org/wiki/XML ↩
-
Wikipedia: XPath - https://en.wikipedia.org/wiki/XPath ↩