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