Wer einen XML-Editor zum bearbeiten von XML-Dateien verwendet, der wird sich etwas Speicherplatz sparen wollen und diese Dateien unformatiert abspeichern. Das heißt, dass weder Leerzeichen, noch Umbrüche enthalten sind. So weit, so gut. Aber: Was ich nicht für sinnvoll erachte, ist, dass auch die Leerzeichen innerhalb des Nodetextes abgeschnitten werden:
XML = ParseXML(#PB_Any, "<Node>Das ist (war) ein Satz mit Leerzeichen.</Node>")
FormatXML(XML, #PB_XML_CutNewline|#PB_XML_CutSpace|#PB_XML_ReduceNewline|#PB_XML_ReduceSpace)
Debug GetXMLNodeText(MainXMLNode(XML))
xmlstr.s = ~"<table>\n\t<tr>\n\t\t<td>\n\t\t\tDas ist (war) ein Satz mit Leerzeichen.\n\t\t</td>\n\t</tr>\n</table>"
Debug xmlstr
XML = ParseXML(#PB_Any, xmlstr)
FormatXML(XML, #PB_XML_CutNewline|#PB_XML_ReduceNewline|#PB_XML_ReduceSpace|#PB_XML_CutSpace)
Debug ComposeXML(XML)
#PB_XML_CutSpace kann nützlich sein für XML bei dem die relevanten Inhalte ausschließlich als Attribut-Werte abgelegt sind und nicht als Elementen-Inhalt.
NicTheQuick hat geschrieben:Mir fällt auch gerade auf, dass Purebasic Zeilenumbrüche in Attributen einfach wegoptimiert.
Aus diesem Grund werden Newlines in Attributen beim Setzen durch SetXMLAttribute() mit Character-Referenzen ersetzt damit diese eben nicht normalisiert werden. Siehe hier:
freak hat geschrieben:#PB_XML_CutSpace kann nützlich sein für XML bei dem die relevanten Inhalte ausschließlich als Attribut-Werte abgelegt sind und nicht als Elementen-Inhalt.
Genau so musse ich es letztendlich auch machen. Als Bug melden?
Achso: Wollte noch zeigen, dass das Apostroph und das Anführungszeichen auch Entity-maskiert werden: