Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]DOMElement
hobibit
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 22.03.2008

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


  1. $doc = new DOMDocument();
  2.  
  3. $foo = $doc->createElement("foo");
  4. $doc->appendChild($foo);
  5.  
  6. $bar = $doc->createElement("bar");
  7. $foo->appendChild($bar);
  8.  
  9. $bazz = $doc->createElement("bazz");
  10. $foo->appendChild($bazz);
  11.  
  12. echo $doc->saveXML();


Co chciał bym dostać:
  1. <foo>
  2. <bar></bar>
  3. <bazz></bazz>
  4. </foo>


Co dostaje:
  1. <foo>
  2. <bar>
  3. <bazz></bazz>
  4. </bar>
  5. </foo>


Problem częściowo rozwiązałem, kiedy elementy tworzy się przez $doc->createElement("foo",""); działa dobrze.

Ten post edytował hobibit 28.06.2013, 08:49:44
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Wszystko robisz prawidłowo (możesz to zweryfikować zapisując XML do pliku). Niestety przeglądarki różnie interpretują puste tagi XML-a (sprawdź w IE). Rozwiązaniem może być użycie:
  1. $doc->saveXML($doc, LIBXML_NOEMPTYTAG);

zamiast:
  1. $doc->saveXML();


Oczywiście sam obiekt dokumentu DOM jest prawidłowy, co możesz sprawdzić w ten sposób:
  1. echo '<pre>';
  2. for($i = 0; $i < $doc->childNodes->item(0)->childNodes->length; $i++) {
  3. $cn = $doc->childNodes->item(0)->childNodes->item($i);
  4. if($cn->nodeType == 1) {
  5. var_dump($cn);
  6. }
  7. }


Ten post edytował mortus 28.06.2013, 10:11:51
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 19:36