Białe znaki w XML-u
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 ;)
NuLL:
05/09/2007 @ 9:29:52 | #1
Poszukaj ignoreWhitespace(s) – jest taka opcja – przynajmniej w PHP udostepniona w DOMie.
MalCom:
05/09/2007 @ 10:11:48 | #2
Znalazlem w enum
xmlParserOptionpozycje: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.