Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Usuwanie komentarzy w XML poprzez DOM
Maciekkk
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.09.2004

Ostrzeżenie: (0%)
-----


Witam,

1.
Stworzenie komentarza w dokumencie XML za pomocą klas DOM jest banalnie proste:
  1. $comment = $element->appendChild(new DOMComment('root comment'));

Ale jak korzystając dalej z funkcjonalności DOM usunąć/zamienić dany komentarz lub wszystkie komentarze?
W dokumentacji jest tylko tworzenie... a może xpatch-em?

2.
Formatowanie dokumentu XML.
Gdy wczytuję gotowy plik XML i dodaję nowe tagi do dokumentu układają się one jeden za drugim bez formatowania.
W momencie gdy z palca preparuję dokument i wywalę wszystkie odstępy i nowe linijki to za pierwszym razem dokument tworzy się idealny.
Przy kolejnym wczytaniu "idealnego dokumentu" dopisuje bez formatowania.
Jak go zmusić by przy każdym zapisie pliku formatował go poprawnie?

  1. $xml = new DOMDocument;
  2. $xml->validateOnParse = true;
  3. $xml->preserverWhiteSpace = true;
  4. $xml->formatOutput = true;
  5. $xml->load($plik_xml);
  6. ...
  7. //dodawanie tagów itp.
  8. ...
  9. $xml->save($plik_xml);


Go to the top of the page
+Quote Post
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


ad. 1 Wskazówka: Każdy węzeł w XML ma swój typ. Tak samo jak komentarz.
ad.2 Czytaj komentarze w dokumentacji.
Go to the top of the page
+Quote Post
Maciekkk
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.09.2004

Ostrzeżenie: (0%)
-----


Dzięki, wskazówki pomogły.
Dla innych, którzy również poszukują rozwiązania:

1.
Warunek sprawdzający typ węzła:
  1. nodeType==XML_COMMENT_NODE


2.
Ważne: preserveWhiteSpace = false oraz formatOutput po załadowaniu pliku.

  1. $dom->preserveWhiteSpace = false;
  2. $dom->load ("plik.xml");
  3. $dom->formatOutput = true;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 21:37