Gå til innhold

Bruke PHP til å skrive til XML filer


Anbefalte innlegg

Hei.

 

Jeg har et spørsmål ang. SimpleXML som følger med PHP5.

Jeg har lett klart å lese fra en XML fil med SimpleXML, men er det mulig å bruke SimpleXML til å skrive ut til en fil? F.eks hvis jeg vil bruke PHP til å legge til elementer i en xml fil, hvordan kan jeg gjøre det?

Hvis det ikke er mulig å bruke simplexml til å gjøre det, er det noen andre "enkle" måter å skrive XML filer på, eller må jeg skrive alt selv med fil-operasjoner i php?

 

På forhånd takk :)

Endret av ZiggWarth
Lenke til kommentar
Videoannonse
Annonse

Hvordan skrive til fil med simplexml:

<?php
$f = simplexml_load_file('http://www.dagbladet.no/rss/oppdatert.xml');


$output = '<span>Head:</span> ';
foreach($f->channel as $f2)
{
$output .= '<div>tittel: '       . $f2->title          . '</div>';
$output .= '<div>link: '         . $f2->link           . '</div>';
$output .= '<div>beskrivelse: '  . $f2->description    . '</div>';
}

$output .= '<hr />';

$output .= '<span>Body: </span>';

foreach($f->item as $item)
{



$output .= '<div>tittel: '      . $item->title       . '</div>';
$output .= '<div>link: '        . $item->link        . '</div>';
$output .= '<div>beskrivelse: ' . $item->description . "</div><hr />\n\n";

}

//Gjøre om alle \n til \r\n (hvis du bruker windows)
$output = str_replace("\n", "\r\n", $output);

//Nå ligger alt output i variabelen $output, som du kan skrive til fil ved hjelp av file_put_contents
file_put_contents('filnavn.suffix', $output);


?>

Lenke til kommentar
uten at jeg har bruke simplexml før (eller php5) - ser det ut som om dette står omtalt i manualen (som du selvfølgelig leste i først?)

 

kanskje denne funksjonen?

SimpleXMLElement->asXML --  Return a well-formed XML string based on SimpleXML element.

Ok, på den måten kan jeg skrive XML fila.

Da gjenstår det bare å finne ut hvordan jeg kan legge til elementer i xml fila.. :)

 

(ps: beklager litt sent svar)

 

simplexml_load_file() returnerer jo et objekt, hvor jeg kan hente data sånn:

echo $xml->element1->navn;

echo $xml->element5->passord;

 

evt.

 

echo $xml->element[0]->navn;

echo $xml->element[4]->passord;

 

osvosv.

 

Hvordan kan jeg redigere et objekt?

Som en test har jeg laget et xml dokument som dette:

<?xml version="1.0" encoding="UTF-8" ?>

<users>
<user>
 <username>ziggy</username>
 <password>gugg</password>
</user>
<user>
 <username>julenissen</username>
 <password>totott</password>
</user>
</users>

 

Jeg har prøvd å bruke array_push for å muligens legge til et element i $xml->user arrayen, men det gikk ikke. (fikk beskjed om at første argument må være en array, noe jeg mener $xml->user ER, ettersom jeg kan gjøre sånn for å referere til de forskjellige elementene:

echo $xml->user[0]->username;

echo $xml->user[1]->username;

etc.)

 

Her er koden jeg brukte:

$xml = simplexml_load_file("test.xml");

class user
{
var $username;
var $password;
}

$newuser = new user();

$newuser->username = "abcdefg";
$newuser->password = "hijklmnop";

array_push($xml->user, $newuser);

echo $xml->asXML();

 

Er jeg helt på villspor når jeg prøver noe slikt, eller har jeg bare gjort en feil et sted?

 

Takker for alle svar hittil :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...