PHP: XML-string zum Download anbieten

Hi.

Ich habe in PHP einen String erzeugt, der XML-Code beinhaltet.
Also als simples Beispiel:

<Elements>
    <Element>ABC</Element>
    <Element>DEF</Element>
</Elements>

Nun möchte ich diesen XML-String als XML-Datei zum Download anbieten.

Hab schon viel gegoogelt, aber noch nicht das gefunden, was ich suche …
Wie macht man das bloß?

Vielen Dank für eure Hilfe!
Gruß N°1

Hallo,

das Problem ist nicht wirklich gut beschrieben, da man nicht nachvollziehen kann, an welchem Punkt du fest steckst.

Ich gebe daher mal zwei Hinweise:

  • HTTP-Header Content-Type korrekt setzen, damit der Browser weiß, dass da XML kommt
  • HTTP-Header Content-Disposition setzen, damit ein Dateiname zum speichern vorgeschlagen wird

Gruß,
Steve

Hi.

Ich versuch es nochmal zu beschreiben mit einem simplen Beispiel.
Im PHP-Code gibt es eine Stelle wo in etwa Folgendes steht:

$xml_1 = "<Element>ABC</Element>";
$xml_2 = "<Element>DEF</Element>";
$xmlstring = "<Elements>".$xml_1.$xml_2."</Elements>";

Nun soll dieser ‚fertige‘ String als eine XML-Datei beispiel.xml zum Download angeboten werden.
Muss ich erst eine XML-Datei auf dem Server erzeugen? (Wie am besten?)

Danke für Tipps!
N°1

1 Like

Kannst du machen, du kannst es aber auch direkt an den Client schicken.
Das hängt vor allem davon ab, ob es jedes Mal dynamisch generiert wird, oder nur einmal erstellt und mehrfach heruntergeladen werden soll.

Gruß,
Steve

Hi.

Es wird nur einmal erstellt. Ein einmaliger Download.
Wie kann ich es direkt an den Client schicken??
Genau das ist mein Problem!

Danke!!
N°1

Und an welchem Punkt bist du jetzt?

„Was muss ich machen“ ist keine Frage, die man hier sinnvoll beantworten kann.

HI.

Ich bin genau da, wie ich es beschrieben hatte: beim ‚fertigen‘ $xmlstring.
Der soll jetzt als XML-Datei rausgeschickt werden (an den Client).

Gruß
N°1

<?php header('Content-Type: application/xml'); header('Content-Disposition: attachment; filename="downloaded.xml"'); echo $xmlstring; ?>
1 Like

obwohl ich mir nicht sicher bin ob das nötig ist , weil der browser brauch ja eigentlich gar nicht wissen da es xml ist . nicht das der browser das noch öffnen will . Ergo kannst du es auch als binary anbieten und pushen .

das wäre dann
header(„Content-type: application/octet-stream“);
oder
header(„Content-type: text/plain“);

1 Like