У меня есть массив с некоторыми объектами SimpleXMLElement внутри, и теперь мне нужно получить хорошо сформированный XML для взаимодействия Ajax, как я могу это сделать?
Это массив:
Array (
[0] => SimpleXMLElement Object (
[count] => 2
[id] => 20
[user_id] => 2
[title] => Polo RL )
[1] => SimpleXMLElement Object (
[count] => 3
[id] => 19
[user_id] => 4
[title] => tshirt fitch )
[2] => SimpleXMLElement Object (
[count] => 2
[id] => 18
[user_id] => 2
[title] => Polo La Martina )
)
Я бы получил этот результат XML:
<root>
<record>
<count>2</count>
<id>20</id>
<user_id>2</user_id>
<title>Polo RL</title>
</record>
<record>
<count>3</count>
<id>19</id>
<user_id>4</user_id>
<title>tshirt fitch</title>
</record>
<record>
<count>2</count>
<id>18</id>
<user_id>2</user_id>
<title>Polo La Martina</title>
</record>
</root>
Я бы использовал метод SimpleXMLElement asXML для вывода XML каждого объекта. Таким образом:
$xml = <<<XML
<record>
<count>2</count>
<id>20</id>
<user_id>2</user_id>
<title>Polo RL</title>
<record>
XML;
$xml = new SimpleXMLElement($xml);
echo $xml->asXML();
Выведет это:
<record>
<count>2</count>
<id>20</id>
<user_id>2</user_id>
<title>Polo RL</title>
<record>
Таким образом, вы можете просто пропустить ваш массив, выводя каждый элемент xml в переменную следующим образом:
$fullXml = '<root>';
foreach($arrXml as $xmlElement){
$fullXml .= str_replace('<?xml version="1.0"?>', '',$xmlElement->asXML());
}
$fullXml .= '</root>';
echo $fullXml ;