Hallo Leute.
Ich erstelle und editiere XML-Files per XML::DOM Interface. Nun möchte ich mir die Arbeit
gerne erleichtern, indem ich anstatt Markup-Zeichen per regulärer Ausdrücke zu erstetzen, meine
Daten in CDATA-Sections abspeichern.
Dies sollte eigentlich einfach per createCDATASection funktionieren. Funktioniert ja eigentlich
auch, nur das wenn ich den DOM-Tree abspeichere wandelt er mit die CDATA in ganz normale DATA.
Ich hab dann rausgefunden, dass man beim XML::Parser die Option KeepCDATA auf 1 setzen soll,
hab ich dann auch gemacht hat aber leider nichts geholfen.
Gruß
tom
Source meiner setString Methode:
sub setString {
129 my $self = shift;
130 my $varname = shift;
131 my $value = shift;
132 my $string;
133 my $data;
134 if (!$self->doc()) {
135 return;
143 $root->appendChild($faq);
144 }
145 else{
146 $faq=$faq->item(0);
147 }
148
149 my $entry=$root->getElementsByTagName($varname);
150
151 if ($entry->getLength==0) {
152 $entry = $self->doc()->createElement($varname);
153 $faq->appendChild($entry);
154 }
155 else{
156 $entry=$entry->item(0);
157 }
158
159 $data=$self->doc()->createCDATASection;
160 $data->setData($value);
161 unless($entry->getNextSibling){
162 $entry->appendChild($data);
163 }
164
165 else{
166 $entry->removeChild($entry->getFirstChild);
167 $entry->appendChild($data);
168 }
169
170 }
Inhalt eines XML-Files:
<?xml version='1.0'?>
<faqfile>
<faq>
<NAME>E. Simmet</NAME>
<TYPE>Errortracking</TYPE>
<STATUS>Open</STATUS>
<SYSTEM>Jupiter 1.21</SYSTEM>
<QUESTION>test</QUESTION>
<SCOPE>TSS</SCOPE>
<DATE>Mon Sep 18 17:03:57 2000</DATE>
</faq>
</faqfile>