webForumDet fria alternativet

Spara en XML-fil med PHP

5 svar · 630 visningar · startad av Roing

RoingMedlem sedan feb. 2003108 inlägg
#1

jag har följande ASP-script som jag nu vill ersätta med ett PHP-script.

---------------------------------------------------------------
*<%@ Language=VBScript %>
<%
On Error Resume Next
Dim fileName, fullPath

fileName=Request.Form("fileName")
fullPath=Server.MapPath(fileName)

Dim xmlDoc, xmlData

xmlData=Request.Form("xmlData")
set xmlDoc=CreateObject("Msxml2.DOMDocument")
xmlDoc.async=False

xmlDoc.LoadXML(xmlData)
xmlDoc.Save(fullPath)

dim taskStatus

if err then
	taskStatus="taskStatus=Error saving XML document as " & fileName
else
	taksStatus="taskStatus=Saved XML document as " & fileName
end if

Response.Write taskStatus

%>*
---------------------------------------------------------------

Vill alltså ha en PHP-fil som gör samma sak.
tack

/Martin

monAmourMedlem sedan dec. 2002258 inlägg
RoingMedlem sedan feb. 2003108 inlägg
#3

Nu har jag frågat om detta på hundratals forum...
Jag får det inte att fungera... Jag har kommit så långt att jag inser att man ska använda något liknande det jag har här över men i PHP. Men då kan det tydligen behövas någon extra XML class till PHP...

Altså det enkla jag försöker göra är bara att spara en XML-instans från en Flash till en fil... Möjligt man kan sända XML-instansen som ren text och sedan med PHP skapa en XML-fil?

DarrenMedlem sedan dec. 2002789 inlägg
#4

Måste ha missat tråden tidigare... ;)

Att skapa en XML-fil med PHP är inte så svårt. Kolla på exemplet nedan så skall du se:

// skapar ett nytt dokument
    $doc = domxml_new_doc("1.0");

// skapar en kommentar
    $tmp = $doc->create_comment("\nCreated with PHP 4.3.2\n");
// lägger till kommentaren till dokumentet
    $comment = $doc->append_child($tmp);

// skapar root-noden
    $root = $doc->new_child("root", "");

// skapar första barn-noden
    $child= $root->new_child("child", "");
// lägger till ett attribut till barn-noden
    $tmp = $child->set_attribute("id", "1001");
// skapar ett barn-nod till barn-noden
    $newchild = $child->new_child("child1", "text1");

// sparar dokumentet som test.xml filen i samma mapp som php-skriptet ligger i
    $tmp = $doc->dump_file("test.xml", false, true);

Ovanstående skript skapar en xml-fil som ser ut så här:

<?xml version="1.0"?>
<!--
Created with PHP 4.3.2
-->
<root>
    <child id="1001">
        <child1>text1</child1>
    </child>
</root>

Vill du veta mer? Kolla denna sidan då: http://www.php.net/manual/en/ref.domxml.php

RoingMedlem sedan feb. 2003108 inlägg
#5

ag har ett färdigt XML-träd som jag sänder till php... detta trädet jag vill spara...

Vet du hur man "fångar" det har läst att man ska kolla efter http_raw_post_data eller något liknande...

om man får in hela XML objektet i en variabel ($doc) i php så är det bara att spara ner den med
$doc->dump_file("test.xml",_false,_true) eller?

roadyMedlem sedan jan. 2002473 inlägg
#6

Tänkte fortsätta på denna,.
Kan verkligen inte PHP och letar därför efter den simplaste lösningen. Detta är mest påståenden här, rätta mig nu :e

1.) Behöver jag någon extra komponent till PHP (har svårt o fatta hur man installerar dem också).
2.) Jag har en XML i min flash som jag vill spara på servern (har en fråga/diskution om detta här).
2.1) Jag sänder xml;en FRÅN flash TILL php, vill ha respons tillbaka.

var login_str:String = "<myxml><news><item><title>Hello</title></item></news></myxml>";
var my_xml:XML = new XML(login_str);
	my_xml.contentType = "text/xml";

var myLoginReply_xml:XML = new XML();
	myLoginReply_xml.ignoreWhite = true;
	myLoginReply_xml.onLoad = myOnLoad;

	
function myOnLoad(success:Boolean) {
    if (success) {
        if ((myLoginReply_xml.firstChild.nodeName == "packet") &&
            (myLoginReply_xml.firstChild.attributes.success == "true")) {
            gotoAndStop("loggedIn");
        } else {
            gotoAndStop("loginFailed");
        }
    } else {
        gotoAndStop("connectionFailed");
    }
}
my_xml.sendAndLoad("http://localhost/saveXML.php", myLoginReply_xml);

2.2) Serversidan ser ut såhär, får XML;en. Sparar den med utf-8 encode.

???

3. Extras. Önskvärda extrafunktioner som jag inte förstår hur man skall få med är.
3.1) Från flashen skickas värden med, detta kan t.ex. vara språk förkortningar som t.ex. en,sv,it. Detta är för att kunna lägga xml;en i en egen mapp.
3.2) När xml;en sparas så finns det troligtvis en annan fil redan där. Gå igenom den och ändra enbart på de XML;noder som är anorlunda mot de som redan finns.

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)