Oprettet lør. d. 21. februar 2009 kl. 22:08:26

hypofysen
hypofysen (4.563 point. Point ude: 210)

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>

Skrevet lør. d. 21. februar 2009 kl. 22:22:06| #1

arne_v
arne_v (1.005.623 point)
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

hypofysen
hypofysen (4.563 point)
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

arne_v
arne_v (1.005.623 point)
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

hypofysen
hypofysen (4.563 point)
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

hypofysen
hypofysen (4.563 point)
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

arne_v
arne_v (1.005.623 point)
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

hypofysen
hypofysen (4.563 point)
<?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

arne_v
arne_v (1.005.623 point)
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

hypofysen
hypofysen (4.563 point)
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

arne_v
arne_v (1.005.623 point)
Hvordan ser XML filen ud når du får den fejl ?

Skrevet søn. d. 22. februar 2009 kl. 00:25:20| #11

hypofysen
hypofysen (4.563 point)
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);
?>

Skrevet søn. d. 22. februar 2009 kl. 00:36:30| #12

arne_v
arne_v (1.005.623 point)
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

hypofysen
hypofysen (4.563 point)
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

arne_v
arne_v (1.005.623 point)
Husk at opdatering af XML filer og flere samtidige brugere er en farlig cocktail.

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Ville ikke tildele at upload det til database eller komme...

Oprettet den 10. februar 2012 kl. 21.23
tobrukDk giver 15 point for svar | Giv et svar »

HTTP Post XML og modtag svar

Oprettet den 10. februar 2012 kl. 17.55
mrkaynex giver 200 point for svar | Giv et svar »

Inspion Economy søger en dygtig programmør, som kan...

Oprettet den 10. februar 2012 kl. 16.09
Kathja giver 15 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger