Avatar billede hypofysen Nybegynder
21. februar 2009 - 22:08 Der er 13 kommentarer og
1 løsning

indsæt i xml dokument

jeg har dette i et xml dokument:

<thumbnails>
<thumbnail filename="test.png" label="min titel" url="test.php" />
</thumbnails>


hvordan indsætter jeg lettest, så jeg får følgende i stedet:

<thumbnails>
<thumbnail filename="test.png" label="min titel" url="test.php" />

<thumbnail filename="test1.png" label="min titel1" url="test1.php" />
</thumbnails>
Avatar billede arne_v Ekspert
21. februar 2009 - 22:22 #1
http://www.eksperten.dk/guide/1263

gå ned til koden "changedom.php"

den viser hvordan man ændre i en XMl fil
Avatar billede hypofysen Nybegynder
21. februar 2009 - 22:45 #2
hej arne, tak for svaret havde gennemlæst artiklen men uden at jeg fik løst problemet..

Har lidt problemer med xml :), men tak for svaret, jeg kæmper videre...
Avatar billede arne_v Ekspert
21. februar 2009 - 22:52 #3
du læser din XML ind i et DOM dokument
du finder den node hvor det nye element skal indsættes
du creater det nye element
du indsætter det nye element

prøv og vis den kode du har, så kan vi sikkert sige hvor det går galt
Avatar billede hypofysen Nybegynder
21. februar 2009 - 23:11 #4
jeg er kommet hertil:
<?php
if (isset($_POST['submit'])) {
    $filnavn = 'test.xml';
    $out = "<thumbnail filename=\"Gibson-Les-Paul-Custom-Alpine-White.png\" label=\"Gibson Les Paul Custom Alpine White\" url=\"index.php?choise=product&cat=7&pid=6\" />";
    if (!file_exists($filnavn)) touch($filnavn);
    $fp = fopen($filnavn, 'a');
    fwrite($fp, $out);
    fclose($fp);
    echo "xml opdateret";
} else {
?>
<form action="test.php" method="post">
<input type="submit" name="submit" value="Lav xml" /></p>
</form>
<?php
};?>

men det giver følgende resultat
<thumbnails>
<thumbnail filename="test.png" label="min titel" url="test.php" />
</thumbnails>
<thumbnail filename="test1.png" label="min titel1" url="test1.php" />
Avatar billede hypofysen Nybegynder
21. februar 2009 - 23:13 #5
følgende resultat selvfølgelig :)

<thumbnail>
<thumbnail filename="Gibson-Les-Paul-Custom-Alpine-White.png" label="Gibson Les Paul Custom Alpine White" url="index.php?choise=product&cat=7&pid=6" />
</thumbnail>
<thumbnail filename="Gibson-Les-Paul-Custom-Alpine-White.png" label="Gibson Les Paul Custom Alpine White" url="index.php?choise=product&cat=7&pid=6" />
Avatar billede arne_v Ekspert
21. februar 2009 - 23:27 #6
Ja.

Du appender i bunden af filen.

Men du kan ikke løse problemet på den måde.

Gør som jeg beskriver i #3.

Eksemplet som jeg linker til i #1 skulle gerne hjælpe dig på vej.
Avatar billede hypofysen Nybegynder
21. februar 2009 - 23:51 #7
<?php
if(isset($_POST['submit'])){
$desc = "thumbnail filename=\"Gibson-White.png\" label=\"GibsonWhite\" url=\"indexpid=6\"";

$xmlstr = file_get_contents("test.xml");
$xml = new SimplexmlElement($xmlstr); 
$newImage = $xml->addchild($desc);
$handle = fopen("test.xml", "w");
fwrite($handle, $xml->asxml());
fclose($handle);
};

kan du så fortælle hvad der er galt med den her?
Første gang jeg kører det virker det fint og opdatere xml som det skal men anden gang bliver jeg bomberderet med warnings
Avatar billede arne_v Ekspert
22. februar 2009 - 00:06 #8
Hvilke warnings ?

<?php
$desc = "thumbnail filename=\"Gibson-White.png\" label=\"GibsonWhite\" url=\"indexpid=6\"";
$xmlstr = file_get_contents("test.xml");
$xml = new SimplexmlElement($xmlstr);
$newImage = $xml->addchild($desc);
$handle = fopen("test.xml", "w");
fwrite($handle, $xml->asxml());
fclose($handle);
?>

virker hos mig !
Avatar billede hypofysen Nybegynder
22. februar 2009 - 00:12 #9
Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 6: parser error : EntityRef: expecting ';' in C:\wamp\www\xmltest\test.php on line 17

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: g" label="Gibson Les Paul Custom Alpine White" url="index.php?choise=product&cat in C:\wamp\www\xmltest\test.php on line 17

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: ^ in C:\wamp\www\xmltest\test.php on line 17

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 6: parser error : EntityRef: expecting ';' in C:\wamp\www\xmltest\test.php on line 17

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: el="Gibson Les Paul Custom Alpine White" url="index.php?choise=product&cat=7&pid in C:\wamp\www\xmltest\test.php on line 17

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: ^ in C:\wamp\www\xmltest\test.php on line 17

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\wamp\www\xmltest\test.php:17 Stack trace: #0 C:\wamp\www\xmltest\test.php(17): SimpleXMLElement->__construct('<?xml version="...') #1 {main} thrown in C:\wamp\www\xmltest\test.php on line 17
Avatar billede arne_v Ekspert
22. februar 2009 - 00:24 #10
Hvordan ser XML filen ud når du får den fejl ?
Avatar billede hypofysen Nybegynder
22. februar 2009 - 00:25 #11
fandt ud af det

ændrede mine & tegn til &amp; (banker hovedet i bordet)

tak for hjælpen smid et svar, gerne med en kommentar om

dette er den optimale måde at gøre det på..

<?php
$desc = "thumbnail filename=\"Gibson-White.png\" label=\"GibsonWhite\" url=\"indexpid=6\"";
$xmlstr = file_get_contents("test.xml");
$xml = new SimplexmlElement($xmlstr);
$newImage = $xml->addchild($desc);
$handle = fopen("test.xml", "w");
fwrite($handle, $xml->asxml());
fclose($handle);
?>
Avatar billede arne_v Ekspert
22. februar 2009 - 00:36 #12
Nu skal du vel lige have din FORM tilbage.

Jeg lavede det uden fordi det var nemmere at teste.

Jeg ville bruge DOMDocument fremfor SimpleXML til at opdatere XML med.

Men kan du bedre lide SimpleXML så er det jo fint.

Og svar.
Avatar billede hypofysen Nybegynder
22. februar 2009 - 00:42 #13
får en masse fejl når jeg forsøger med dom, manger vist nogle extension, så det må blive næste gang :)

tak for hjælpen
Avatar billede arne_v Ekspert
22. februar 2009 - 02:26 #14
Husk at opdatering af XML filer og flere samtidige brugere er en farlig cocktail.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester