Calocybe: Exception handling

Beitrag lesen

Hi!

da hilft nur, die Attributwerte selbst als XML-Fragment zu speichern, oder zumindest als Ausschnitt eines solchen:
<element attribute="Zeile 1<br />Zeile 2<br />Zeile 3" />

Wenn schon, dann muessen die < und > innerhalb des Wertes maskiert werden, und das geht in XML mit & (genauso wie in HTML). Die Slashes dagegen muessen nicht irgendwie maskiert werden. In XML sind das keine besonderen Zeichen.

Eine andere  Frage zum Parser. Wenn ich ein xml-Dokumtent parse welches
"not well formed" ist, bricht der Parser sofort ab.
Mein Problem, wie kann ich im Programm prüfen ob ein Dokument well-formed ist,
bzw, den Fehler mittels Parser abfangen und eine anständige Fehlermedlung ausgeben?

XML::Parser verwendet hier Perl's Interpretation von Exceptions, naemlich die(). Eine die()-Exception faengt man mit eval() ab, ungefaehr so:

$my xp = XML::Parser->new(Style => 'MyOwn::StylePackage');

{   # 'local' is restricted to this block
        local $SIG{__DIE__} = 'IGNORE';     # prevent calling a possibly installed __DIE__ signal handler
        eval {  $parsed = $xp->parse($xml);  };
    }

if ($@) {
        # parse error messages look like this:
        # not well-formed at line 10, column 8, byte 382 at d:/bin/perl/site/lib/XML/Parser.pm line 183

$@ =~ /(.*) at .*? line \d+.?\s*$/;
        my $errmsg = $1 $@;
        print STDERR "Parse error: $errmsg\n";
    }

So long