Avatar billede Slettet bruger
19. juni 2006 - 22:19 Der er 18 kommentarer og
1 løsning

XML + PHP - read and write

Hej eksperter.
Jeg ville lige høre hvordan man skriver noget til et XML dokument, og så lige så hvordan man henter det ind.

Jeg vil gerne skrive nogen åbningstider ned:
mandag - torsdag 09:30 - 15:30
fredag - lørdag 10:00 - 12:30
søndag Lukket

Hvordan gør jeg det?

Og hvis jeg kun vil hente fredag - lørdag ind?
Avatar billede Slettet bruger
19. juni 2006 - 22:28 #1
Dette er vil koden til mit XML dokument?

<?xml version="1.0"?>
<aabningstider>
<mandag-torsdag>09:30 - 12:30</mandag-torsdag>
<fredag-loerdag>10:00 - 12:30</fredag-loerdag>
<soendag>LUKKET</soendag>
</aabningstider>
Avatar billede Slettet bruger
19. juni 2006 - 22:51 #2
PHP har et rigtigt nifty hjælpelib de kalder "SimpleXML", tag et kig på:
http://dk2.php.net/simplexml

--pacroon
Avatar billede webcreator Nybegynder
19. juni 2006 - 22:54 #3
Hej coldgate.

Hvis du udelukkende vil læse XML, og ikke har noget imod at ændre XML filen manuelt, så er SimpleXML (som pacroon refererer til) det nemmeste. Skal du derimod også skrive via PHP, så skal du tage et kig på deres DOM klasser - http://dk.php.net/manual/en/ref.dom.php
Avatar billede Slettet bruger
20. juni 2006 - 06:20 #4
Men kan du ikke give mig et eksmepel til at skrive til et XML dokument?
Avatar billede Slettet bruger
20. juni 2006 - 10:20 #5
Det kan godt være lidt besværligt at sætte sig ind i phpDom fra starten.

Jeg plejer at generere XML filer i en normal php film som bare printer xml tags, og så bare sender en header ud som siger det er en XML fil - det kan man sagtens og det kan i mindre omfattende tilfælde være klart det nemmeste.

--pacroon
Avatar billede Slettet bruger
20. juni 2006 - 17:09 #6
Ja men jeg vil godt have den normale måde, man læser XML ind i PHP på.
Og selvfølgelig også med skrivning til XML.
Avatar billede Slettet bruger
20. juni 2006 - 18:58 #7
Der er ikke rigtig nogen "normal" måde - der er den måde man selv finder nemmest, vil jeg påstå :)

Det er enormt nemt at læse PHP ind med SimpleXML som jeg foreslog - og jeg har aldrig benyttet mig af phpDom, så dér kan jeg ikke hjælpe dig. Men at lave en PHP fil med XML header, som jeg foreslog først :-)
Avatar billede Slettet bruger
20. juni 2006 - 23:06 #8
Der er da et object der hedder XML.
$xml = new XMLreader(); // eller sådan noget

Der må man da kunne bruge den på en fix måde(?).
Avatar billede Slettet bruger
24. juni 2006 - 15:25 #9
Eller hvad?
Avatar billede Slettet bruger
04. juli 2006 - 15:32 #10
Det kan ikke passe at det skal være så besværligt, at hente XML ting ind i PHP!?
Der må da være en nemmer måde, men der er jo som jeg har skrevet foroven et XMLreader(); objekt.
Avatar billede Slettet bruger
04. juli 2006 - 18:50 #11
Det er meget nemt at hente XML ind i PHP med SimpleXML. Har du læst det link jeg sendte? :-)
Avatar billede Slettet bruger
05. juli 2006 - 10:12 #12
Ja men testede det i skolen. Der ville det ikke virke. Jeg slog ellers en extension til.
Avatar billede Slettet bruger
05. juli 2006 - 18:58 #13
Hvad prøvede du?

Prøv at tjekke:
http://dk2.php.net/manual/en/function.simplexml-load-file.php

Der laver den simpelthen bare en XML-fil til et array.
Avatar billede Slettet bruger
06. juli 2006 - 00:38 #14
Lige et ekstra spm, hvad betyder & tegnet der er lavet før funktion her: http://dk2.php.net/manual/en/function.simplexml-load-file.php#61549
Tester lige med XML ting her i morgen,
Avatar billede Slettet bruger
06. juli 2006 - 00:48 #15
Det er et call-by-reference.
http://www.php.net/manual/en/language.references.php

Det kan være lidt snørklet. Det er ikke obligatorisk i brug af SimpleXML på nogen måde.
Avatar billede Slettet bruger
06. juli 2006 - 15:53 #16
Jeg kan stadig ikke finde ud af at kalde en del af XML tingen...

Okay lad os prøve med dette xml:
<?xml version="1.0" encoding="iso-8859-1" ?>
<accountSummary>
  <timestamp>2003-01-01T12:25:00</timestamp>
  <currency>USD</currency>
  <balance>2703.35</balance>
  <interest rounding="down">27.55</interest>
</accountSummary>



Her er mit PHP:
<?php
// The file test.xml contains an XML document with a root element
// and at least an element /[root]/title.
$xml_doc = "my.xml";
if (file_exists($xml_doc)) {
$xml = simplexml_load_file($xml_doc);
print "<pre>";
//var_dump($xml);
print_r($xml);
print_r($xml['artikler']['bog']);
print "</pre>";
} else {
  exit('Failed to open '.$xml_doc);
}
?>



Mit print_r() :
SimpleXMLElement Object
(
    [timestamp] => 2003-01-01T12:25:00
    [currency] => USD
    [balance] => 2703.35
    [interest] => 27.55
)
Avatar billede Slettet bruger
06. juli 2006 - 17:19 #17
print_r($xml['currency']);

Vil så give "USD"

-- pacroon
Avatar billede Slettet bruger
10. juli 2006 - 08:42 #18
Den skriver slet ikke noget ud, den kan godt print_r(), og var_dump().
Men den kan åbenbart ikke finde udaf den lægger inde i xml tagget (accountSummary)
Avatar billede Slettet bruger
10. august 2006 - 09:05 #19
Synes ikke jeg kan få noget ud af dette... lukker...
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