FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Hej,
jag undrar varför dom xml bättre än simple xml? Vad är det som gör den bättre och finns det något fall där den inte är bättre? |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Bara ett inlägg till!
|
Vilket XML-bibliotek som är bäst beror ju på vad du är ute efter. DOM XML implementerar fler funktioner och är bättre objektorienterat (imo). Det följer också DOM-standarden för hur man arbetar med XML-dokument så om du gjort det tidigare i ett annat språk kommer du att känna igen dig. Å andra sidan är DOM XML mer komplex än SimpleXML och därmed svårare att använda för nybörjare.
Båda använder libxml för att utföra sitt arbete så skillnaden i prestanda är förmodligen minimal. De läser in hela XML-filen i minnet så för riktigt stora filer presterar de precis lika dåligt. För hög prestanda (men med färre funktioner) är någon form av SAX-tolk ännu bättre, till exempel XMLReader-biblioteket. Senast redigerad av emilv den 2010-10-29 klockan 17:53 |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Citat:
Men för att gå ifrån frågan något, kan man på något sätt exempelvis bara läsa in början av en xml fil? Säg att jag har sparat att den senaste versionen av xml-filen jag läste in sparades klockan 18:20. Nu är klockan 19:20 och jag ska kolla om den har uppdaterats. Det känns som rätt mycket slöseri med bandbredd om man ska behöva läsa in hela filen för att kontrollera en så simpel sak. I xml-filen finns följande rad som jag jämför med: <lastupdated>2010-10-29 18:40:07</lastupdated> Det jag vill göra är att läsa in en xml fil i en databas. Jag har tidigare löst detta med en while-sats och simple xml. Kanske inte den mest effektiva lösningen, därför jag undrar. Som det är nu läser jag exempelvis in hela xml-filen vid min jämförelse om den är uppdaterad osv. Jag tänkte att kanske XML DOM kunde ha hjälpt mig. Senast redigerad av mojitoo den 2010-10-29 klockan 18:28 |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Bara ett inlägg till!
|
Kolla in XMLReader-biblioteket. Det borde kunna göra det du vill. Annars kan du göra en vanlig stat på filsystemet om filen ligger lokalt (filemtime).
|
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Supermoderator
|
Hur ofta läser du in filen? Hur stor är den? Görs det inte mer än en gång i timmen så behöver du normalt sett inte bry dig mycket om prestanda annat än i extremfall.
__________________
Full-stack developer, free for smaller assignments |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
emilv: Jag ska ta en närmare titt på det.
XML filen som läses in varierar i storlek mellan 2-4mb beroende på veckodag och tid, kontrollen sker även via ett cronjob var 20minut så alltså relativt ofta. Anledningen till att den sker så ofta är att datan i den uppdateras väldigt ofrekvent. Ibland kan det vara flera timmar mellan en uppdatering och ibland ett par minuter. XML filen läses förövrigt även in från en annan server så jag vet inget annat sätt att kontrollera när den senast var uppdaterad än att kolla <lastupdate> i själva XML filen. |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Har WN som tidsfördriv
|
Ja, XMLReader och XMLWriter klarar man sig inte utan när man jobbar med Streams. Skrev en 500Mb xml fil (runt 15 miljoner entries) för ett par veckor sedan, skulle aldrig ha klarat det utan XMLWriter.
|
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Medlem
|
Citat:
http://php.net/manual/en/book.xmlreader.php http://www.php.net/manual/en/book.xmlwriter.php Är det någon av er som vet vilken funktion man borde studera närmare för att inte behöva läsa in hela dokumenten för att kolla en nod alldeles i början av dokumenten? |
||
![]() |
![]() |
![]() |
#9 | |||
|
||||
Bara ett inlägg till!
|
Då är det XMLReader-klassen du ska studera. Någon särskild funktion verkar det inte vara, utan förstå hur hela klassen fungerar, både funktioner och egenskaper.
|
|||
![]() |
![]() |
Svara |
|
|