He estado tratando de modificar un documento XML dentro de un archivo .tgz archivado usando la clase PharData usando php . No tengo problemas para modificar el XML a través de la clase DomDocument , pero me cuesta mucho guardar todo el proceso: termino guardando 2 documentos .phar diferentes en total, sin modificar nada en el archivo .tgz:
Aquí está el código que he estado usando:
$phar = new PharData($path . '/' . $idClient . '/' . $tempDate->format('ym') . '/' . $file); echo $phar . "\n"; $dom = new DOMDocument(); $dom->load ('phar://' . $path . '/' . $idClient . '/' . $tempDate->format('ym') . '/' . $file . '/' . substr($file, 0, -4) . '.xml'); if ($dom === null) continue; $ids = $dom->documentElement->getElementsByTagName('id'); foreach ($ids as $i_id) { if ($i_id->nodeValue !== $id) continue; echo $i_id->nodeValue . "\n"; echo $i_id->nodeName . "\n"; $sensor = $i_id->parentNode; echo $sensor->nodeName . "\n"; foreach ($sensor->childNodes as $object) { if ($object->nodeName !== 'type') continue; echo $object->nodeName . "\n"; echo $object->nodeValue . "\n"; $object->nodeValue = $type; echo $object->nodeValue . "\n" . "\n"; } } $dom->save('phar://' . $path . '/' . $idClient . '/' . $tempDate->format('ym') . '/' . $file . '.phar' . '/' . substr($file, 0, -4) . '.xml');