Salvar arquivo XML sem Declaração – com endereço específico

Estou tentando encontrar uma maneira de salvar o arquivo XML uma vez editado, sem include a declaração. Mas eu preciso ser capaz de definir um endereço. Como eu estou guardando sobre o XML original, e salvando em uma localização temporária um (duplicado do original para javascript para acessar, como o original está em um arquivo local).

Então eu tentei o $ dom-> saveXML ($ xml-> documentElement); mas sai com alguns erros de salvamento. Esta é a página php que obtém os dados do formulário e o salva no xml atualmente carregado e, em seguida, salva-o e outra cópia (Abaixo da parte inferior do código abaixo)

preserveWhiteSpace = false; $dom->formatOutput = true; $dom->load("../data/fileloc.xml"); $fileUrlTag = $dom->getElementsByTagName('fileurl')->item(0); $fileName = $fileUrlTag->getAttribute('filename'); $fileAddress = $fileUrlTag->getAttribute('address'); $fileUrl = $fileAddress.$fileName; if(isset($_REQUEST['ok'])){ $xml = new DOMDocument(); $xml->preserveWhiteSpace = false; $xml->formatOutput = true; $xml->load($fileUrl); //checks if Objects tag exists $rootTag = $xml->getElementsByTagName("Objects")->item(0); //if Objects tag doesnt exist, creates it and a unique id if($xml->getElementsByTagName("Objects")->length == 0){ $rootTag = $xml->createElement("Objects"); $alph = "0123456789ABCDEF"; $ranStr = ''; for($i=0;$isetAttribute("OverlayId",$randId); $objDocTag = $xml->getElementsByTagName("ObjectsDoc")->item(0); if($objDocTag->getAttribute("Version")->length == 0){ $objDocTag->setAttribute("Version","1.0"); }; $objDocTag->appendChild($rootTag); }; //used to set ID on Layer tag - gets value from the Objects->OverlayId attribute $getId = $rootTag->getAttribute('OverlayId'); //used to set ID on Object tag $numObj = $xml->getElementsByTagName('Object')->length; //commstag determines colours for Pen and Brush tags $commsTag = $xml->createElement("comms",$_REQUEST["comms"]); //convert from deg to radians $lat = $_REQUEST['lat']; $long = $_REQUEST['long']; $latRad = ($lat*6.28318)/360; $longRad = ($long*6.28318)/360; if($_REQUEST['comms']=='Good'){ $color = array(255,0,255,0); }; if($_REQUEST['comms']=='Bad'){ $color = array(255,0,255,255); }; if($_REQUEST['comms']=='None'){ $color = array(255,0,0,255); }; //Create object and set object attributes $objectTag = $xml->createElement("Object"); $objectTag->setAttribute("ID",($numObj+1000)); $objectTag->setAttribute("Parent",$_REQUEST['level']); $objectTag->setAttribute("Visibile","1"); $objectTag->setAttribute("type","MAPDRAW_OBJECT"); $graphicTag = $xml->createElement("Graphic"); $graphicTag->setAttribute('AlwaysShowName','1'); $graphicTag->setAttribute('Font',"Calibri"); $graphicTag->setAttribute('Name',strtoupper($_REQUEST["callsign"])); $graphicTag->setAttribute('TextColor',"0"); $graphicTag->setAttribute('TextPosition',6); $graphicTag->setAttribute('Version',"1.0"); $graphicTag->setAttribute('Visible',1); $graphicTag->setAttribute('Size',12); $layerTag = $xml->createElement("Layer"); $layerTag->setAttribute('ID',$getId); $graphicPrimTag = $xml->createElement("GraphicPrimitive"); $graphicPrimTag->setAttribute('Type','CircleSector'); $graphicPrimTag->setAttribute('Version','1.0'); $penTag = $xml->createElement('Pen'); $penTag->setAttribute('A',255); $penTag->setAttribute('B',255); $penTag->setAttribute('G',255); $penTag->setAttribute('R',255); $penTag->setAttribute('Type',0); $penTag->setAttribute('size',4); $brushTag = $xml->createElement('Brush'); $brushTag->setAttribute('A',$color[0]); $brushTag->setAttribute('B',$color[1]); $brushTag->setAttribute('FillStyle',10); $brushTag->setAttribute('G',$color[2]); $brushTag->setAttribute('R',$color[3]); $circleTag = $xml->createElement('CircleSector'); $circleTag->setAttribute('Radius',500); $fontTag = $xml->createElement('Font'); $fontTag->setAttribute('Name','Calibri'); $fontTag->setAttribute('size','15'); $coordsTag = $xml->createElement("Coordinates"); $coordsTag->setAttribute("Absolute","1"); $coordsTag->setAttribute('System','WGS84'); $refcoordTag = $xml->createElement("RefCoordinate"); $refcoordTag->setAttribute('Rotation',0); $refcoordTag->setAttribute('X',$latRad); $refcoordTag->setAttribute('Y',$longRad); $refcoordTag->setAttribute('Z','0'); $coordTag = $xml->createElement("Coordinate"); $coordTag->setAttribute('X',$latRad); $coordTag->setAttribute('Y',$longRad); $coordTag->setAttribute('Z','0'); $coordTag->setAttribute('index','0'); $accessTag = $xml->createElement("AccessRights"); $accessTag->setAttribute('Editable',0); $accessTag->setAttribute('Moveable',0); $accessTag->setAttribute('Selectable',1); //Append RefCoordinate and Coordinate to Coordinates $coordsTag->appendChild($refcoordTag); $coordsTag->appendChild($coordTag); //append Pen, Brush, CircleSelector and Font to GraphicPrimitive $graphicPrimTag->appendChild($penTag); $graphicPrimTag->appendChild($brushTag); $graphicPrimTag->appendChild($circleTag); $graphicPrimTag->appendChild($fontTag); //Append Layer, GraphicPrimitive, Coordinates to Graphic $graphicTag->appendChild($layerTag); $graphicTag->appendChild($graphicPrimTag); $graphicTag->appendChild($coordsTag); //Append Graphic to Object $objectTag->appendChild($graphicTag); $objectTag->appendChild($accessTag); //Append Object to Objects $rootTag->appendChild($objectTag); echo($fileUrl); $xml->save($fileUrl); $xml->save("..temp/".$fileName); exit(); }; 

Eu tentei executar esses (primeiro para salvar na localização que $ xml foi carregado de eu assumir? E o segundo para uma pasta temporária para o javascript – o segundo pode ter a declaração).

 $xml->saveXML($xml->documentElement); $xml->save("..temp/".$fileName); 

Mas receba este erro abaixo

 Warning: DOMDocument::save(..temp/bms_overlays.xml) [domdocument.save]: failed to open stream: No such file or directory in D:\Programs\server2go\htdocs\analyst\scripts\createcontent.php on line 152 

Qualquer ajuda será muito apreciada, pois esta é a primeira vez que joguei com php e xml.

Felicidades,

Mitchell

Intereting Posts