Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]DOMElement
Forum PHP.pl > Forum > Przedszkole
hobibit
  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.
mortus
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. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.