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

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>

  1. 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."

    1. "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?

      1. "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.