CDATA-Section mit XML::DOM erstellen
TOM-M
- perl
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>
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.
"When using XML::DOM with XML::Parser version 2.19 and up, setting the XML::DOM::Parser option KeepCDATA to 1 will store CDATASections in CDATASection nodes, instead of converting them to Text nodes. Subsequent CDATASection nodes will be merged into one."
"When using XML::DOM with XML::Parser version 2.19 and up, setting the XML::DOM::Parser option KeepCDATA to 1 will store CDATASections in CDATASection nodes, instead of converting them to Text nodes. Subsequent
CDATASection nodes will be merged into one."
Was heisst das nun konkret für mein Problem?
"When using XML::DOM with XML::Parser version 2.19 and up, setting the XML::DOM::Parser option KeepCDATA to 1 will store CDATASections in CDATASection nodes, instead of converting them to Text nodes. Subsequent
CDATASection nodes will be merged into one."Was heisst das nun konkret für mein Problem?
Das ist die Anleitung, was du zu tun hast, um dein Problem zu lösen.