WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Indentering av XML (https://www.wn.se/forum/showthread.php?t=23613)

goober 2007-09-14 18:29

Hej.
Jag har gjort en (php)-klass som har till uppgift att agera modell för en xml-fil där min data är lagrad. Klassen kan lägga till / ändra och ta bort data från xml-filen samt hämta värden därifrån.

För att lägga in ny data till filen skapar jag en ny trädstruktur med hjälp av phps DOM klasser (se http://se.php.net/manual/en/ref.dom.php ) för att sedan lägga till det på rätt plats i filen. Allt fungerar korrekt utom att allting hamnar på samma rad, vilket är väldigt irriterande om jag tex vill editera xml-filen manuellt.

Finns det något bra sätt att få till att åtminstone varje element hamnar på en ny rad?

Tack på förhand
Mathias

stakes 2007-09-14 19:27

\n New Line
\t Tab
\r Carriage Return

i php koden där du genererar xml:en

eller är jag inne på fel spår? :P

goober 2007-09-14 20:52

Tack men det var något av det första jag testade utan tillfredsställande resultat.

Exempelkod på hur jag skapar och lägger in data:

Kod:

$newOB = $this->getElementById($id);
$newPercent = $this->createElement('percent');
$newPercent->appendChild($this->createTextNode($percent));
//Merge into the file
$newOB->appendChild($newWeekdays);


patjoh 2007-09-14 20:54

Instansvariabeln formatOutput för DOMDocumentet är som standard satt till false. Om du sätter den till true borde det se bättre ut.

goober 2007-09-14 21:12

Tackar patjoh, det ledde mig in på rätt spår, men jag var även tvungen att lägga in

$this->preserveWhiteSpace = FALSE; Innan jag laddade in min xmlfil med $this->load($document).

Så om det är någon annan som har problem med detta i framtiden så fungerar det med följande kodsnutt:

Kod:

$this->preserveWhiteSpace = FALSE;
$this->load($document);
$this->formatOutput = TRUE;



Alla tider är GMT +2. Klockan är nu 03:48.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson