Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> DOM - (nie)formatowanie + (nie)enkodowanie, problemy z formatOutput i krzakami
yoyo
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 20.12.2003
Skąd: Bielsko-Biała

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


Witam wszystkich po długiej nieobecności na forum.

Mam dwa problemy:

1. Pierwszy problem - formatowanie xml'a ($formatOutput)

ok, więc zacznę od dobrej wiadomośći:

  1. <?php
  2. $xml = DOMDocument::loadXML('<html><head><title>tytuł</title></head><body><p>treść</p></body></html>');
  3. $xml->formatOutput = true;
  4. $xml->encoding  = 'utf-8';
  5. echo $xml->saveXML();
  6. ?>


Dostaję wynik taki jaki oczekiwałem:
(widzę, że forum nie pokazuje wcięć, w każdym razie wcięcia są takie jakie być powinny)

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <html>
  3.  <head>
  4.    <title>tytuł</title>
  5.  </head>
  6.  <body>
  7.    <p>treść</p>
  8.  </body>
  9. </html>


Natomiast problem pojawia się, gdy pomiędzy jakikolwiek element wstawię choćby jeden znak, poniżej dodałem spację po <head>:

  1. <?php
  2. $xml = DOMDocument::loadXML('<html><head> <title>tytuł</title></head><body><p>treść</p></body></html>');
  3. $xml->formatOutput = true;
  4. $xml->encoding  = 'utf-8';
  5. echo $xml->saveXML();
  6. ?>


Wynik dostaję taki:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <html> <head><title>tytuł</title></head><body><p>treść</p></body></html>


I to jest pierwszy problem - teraz przestał formatować.


2. Drugi problem - krzaki przy uzyciu saveHTML()

  1. <?php
  2. $xml = DOMDocument::loadXML('<html><head><title>tytuł</title></head><body><p>treść</p></body></html>');
  3. $xml->formatOutput = true;
  4. $xml->encoding = 'utf-8';
  5. echo $xml->saveHTML();
  6. ?>


A wynik:
(no kurka nie da się tego pokazać, bo forum automatycznie konwertuje &#xxx; na znaczki, tak więc wlepiłem "&-" zamiast "&")

  1. <html>
  2. <head><title>tytu&-#322;</title></head>
  3. <body><p>tre&-#347;&-#263;</p></body>
  4. </html>


Wszystkie dwubitowce zostają zakodowane... abstrahuje już że nie takiego formatowania się spodziewałem.
  • php 5.0.4
  • libxml 2.6.11
  • Windows XP
  • Ilość godzin przed komputerem dzisiaj: 11


--------------------
cieżko jest żyć lekko
Go to the top of the page
+Quote Post
NuLL
post
Post #2





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Do pierwszego...

  1. <?php
  2.  
  3. $xml = new DOMDocument('1.0', 'utf-8');
  4. $xml->preserveWhiteSpace=false;
  5. $xml->loadXML('<html><head> <title>tytuł</title></head><body><p>treść</p></body></html>');
  6. $xml->formatOutput = true;
  7. $xml->encoding  = 'utf-8';
  8. echo $xml->saveXML();
  9.  
  10. ?>


Co do drugiego - zrób coś takiego
  1. <?php
  2. $xml = new DOMDocument('1.0', 'utf-8');
  3. $xml->loadXML('cos tam');
  4. //bla bla
  5.  
  6. ?>


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
yoyo
post
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 20.12.2003
Skąd: Bielsko-Biała

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


Cytat
Do pierwszego...


dzięki śliczne smile.gif

Cytat
Co do drugiego - zrób coś takiego


Problem dotyczy saveHTML() a nie saveXML() i niestety wywołanie DOMDocument('1.0', 'utf-8') nic u mnie nie zmienia, nadal wypluwa jak wypluwał...


--------------------
cieżko jest żyć lekko
Go to the top of the page
+Quote Post
NuLL
post
Post #4





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Ostatecznie mozna to przepuścić przez str_replace'a.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
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:00