Białe znaki w XML-u

4 września 2007

Nie wiem, jak jest zdefiniowana ta sprawa w standardzie, ale taki libxml2 białe znaki między elementami XML-a uznaje jako element.

Mając XML-a:

<root>
	<node>node value</node>
</root>

Pierwszym dzieckiem roota jest element zawierający tabulator i znak końca wiersza, a następnym dopiero element node.

Większość parserów, także tych „wbudowanych” w skryptowe języki - PHP, Perl, standardowo ignoruje takie elementy.

Miałem nadzieje, że jest jakaś opcja w libxml pozwalającą zignorować puste elementy, ale niestety nic nie znalazłem.

Będę musiał się pomęczyć z xmlIsBlankNode().

Tak przy okazji, libxmla ma bardzo wielkie możliwości, póki co wykorzystuje tylko podstawowe elementy w tworzonym serwerze proxy XMPP<>Tlen. Na korzyść libxmla przemawia także bardzo łatwa współpraca z libxslt ;)

Podobne notatki:

Może zainteresują Cię również następujące, pododbne notatki:

Komentarze i nawiązania (2)

Kanał RSS komentarzy

  1. Poszukaj ignoreWhitespace(s) – jest taka opcja – przynajmniej w PHP udostepniona w DOMie.

  2. Znalazlem w enum xmlParserOption pozycje: XML_PARSE_NOBLANKS = 256 : remove blank nodes.

    Teraz tylko podmienic funkcje do „ladowania” XML-a z pliku i stringu na takie, ktore przyjmuja flagi ;)
    Tylko przez to strace defaultowe ustawione flagi, chyba, ze znajde cos co pozwoli ustawic dowolna flage.

    Jeszcze jeden maly mankament na jaki trafilem – libxml do kazdego „zrzutu” XML-a, czy do pliku, czy stringu dolacza prolog XML. Tworcy tlumacza sie tym, ze wymaga tego standard XML 1.1. Nie znalazlem nic ciekawego w libie, aby to „wylaczyc”, chyba recznie bede musial to usuwac, przy dumpach.

Dodaj swój komentarz

Możesz użyć tych tagów XHTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Jeśli chcesz wstawić kilku linijkowy fragment kodu, użyj tagów <pre lang="x"></pre> (gdzie x język kodu np. cpp, perl, html). W ten sposób kod zostanie odpowiednio sformatowany i pokolorowany przez system.

Uwaga!

Na tym blogu działa system cache oraz filtr antyspamowy. Twój komentarz może być widoczny na stronie z pewnym opóźnieniem. Proszę o cierpliwość. Jeśli utraciłeś już wszystkie jej zasoby poinformuj mnie o tym, być może system uznał Cię za spamera ;)