Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/04/2013, 04:10
alyciashape
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 7 meses
Puntos: 58
SimpleXML: "fusionar elementos"

Tengo un XML tal que así:

Código XML:
Ver original
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <pedidos>
  3.    <pedido>
  4.       <id>123456789</id>
  5.       <articulo>100</articulo>
  6.    </pedido>
  7.    <pedido>
  8.       <id>987654321</id>
  9.       <articulo>400</articulo>
  10.    </pedido>
  11.    <pedido>
  12.       <id>123456789</id>
  13.       <articulo>200</articulo>
  14.    </pedido>
  15. </pedidos>

Lo que quisiera, es que si el id de un pedido coincide con el de otro que de alguna forma se fusionaran y queda algo así:
Código XML:
Ver original
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <pedidos>
  3.    <pedido>
  4.       <id>123456789</id>
  5.       <articulo>100</articulo>
  6.       <articulo>200</articulo>
  7.    </pedido>
  8.    <pedido>
  9.       <id>987654321</id>
  10.       <articulo>400</articulo>
  11.    </pedido>
  12. </pedidos>

Es decir se añade los artículos en un mismo pedido y se elimina el otro. Se puede hacer algo así? le tengo dado mil vueltas y nada.

Bueno no tiene por qué ser la corrección en el XML, si se hace en el objeto resultante también me valdría!

Uso simple XML y no paso de:
$pedidos = new SimpleXMLElement($this->url_xml);
y recorrerlo con un foreach.

Pero veo que simpleXML tiene muchas opciones y no se si habrá alguna que haga esto.
Veo que para añadir elementos puedo usar SimpleXMLElement::addAttribute o addChild pero para eliminar no veo ninguna forma.