TOM-M: CDATA-Section mit XML::DOM erstellen

Beitrag lesen

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>