Skrevet lør. d. 21. februar 2009 kl. 22:22:06| #1
http://www.eksperten.dk/ (...)gå ned til koden "changedom.php"
den viser hvordan man ændre i en XMl fil
Skrevet lør. d. 21. februar 2009 kl. 22:45:17| #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...
Skrevet lør. d. 21. februar 2009 kl. 22:52:20| #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
Skrevet lør. d. 21. februar 2009 kl. 23:11:07| #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" />
Skrevet lør. d. 21. februar 2009 kl. 23:13:34| #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" />
Skrevet lør. d. 21. februar 2009 kl. 23:27:30| #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.
Skrevet lør. d. 21. februar 2009 kl. 23:51:06| #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
Skrevet søn. d. 22. februar 2009 kl. 00:06:21| #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 !
Skrevet søn. d. 22. februar 2009 kl. 00:12:58| #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
Skrevet søn. d. 22. februar 2009 kl. 00:24:45| #10
Hvordan ser XML filen ud når du får den fejl ?
Skrevet søn. d. 22. februar 2009 kl. 00:25:20| #11
fandt ud af det
ændrede mine & tegn til & (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);
?>
Skrevet søn. d. 22. februar 2009 kl. 00:36:30| #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.
Skrevet søn. d. 22. februar 2009 kl. 00:42:15| #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
Skrevet søn. d. 22. februar 2009 kl. 02:26:07| #14
Husk at opdatering af XML filer og flere samtidige brugere er en farlig cocktail.