XML::Parser Entities
Peter J. Holzer
hjp at wsr.ac.at
Fri Nov 26 03:59:55 CST 1999
Hallo,
das ist vielleicht gar keine Perl- sondern eine XML-Frage.
Ich verwende XML::Parser, um XHTML (mittels tidy -asxml aus HTML
generiert) zu parsen. Da kommen aber noch Entity References wie ö
drin vor, die mir der Parser scheinbar wegschmeißt. Weiß wer, wie ich
* entweder den Parser dazu bringen kann, die Entities in das
entsprechende Zeichen umzuwandeln
* oder welchen Handler ich installieren muß, um das selber zu machen
(ExternEnt scheint es nicht zu sein)
* oder ob ich durch Einfügen von <!ENTITY> im XML-File an geeigneter
Stelle (wo?) ö und Konsorten vordefinieren kann?
Ein Workaround, der mir einfällt, ist im XML-File alle ö durch
Ö zu ersetzen. Das funktioniert nämlich, wenn auch nicht besonders
schön.
ObCode:
#!/usr/bin/perl -w
use strict;
use XML::Parser;
use IO::File;
sub handle_start {
my ($parser, $element, %attr) = (@_);
print "handle_char: ";
if ($element eq "meta") {
if ($attr{name} eq 'description') {
print "description: ", $attr{content};
}
if ($attr{name} eq 'keywords') {
print "keywords: ", $attr{content};
}
}
print "\n";
}
sub handle_char {
my ($parser, $text) = (@_);
print "handle_char: ";
for my $i (qw/title h1 h2 h3 h4 h5 h6/) {
if ($parser->within_element($i)) {
print "$i ";
}
}
print "$text\n";
}
sub handle_externent {
my ($parser, $base, $sysid, $pubid) = (@_);
print "handle_externent: base = $base, sysid = $sysid, pubid = $pubid\n";
}
my $p1 = new XML::Parser (Handlers => {Start => \&handle_start,
Char => \&handle_char,
ExternEnt => \&handle_externent
},
ProtocolEncoding => 'ISO-8859-1',
NoExpand => 0
);
my $fh = new IO::File ("test.xml", "r");
$p1->parse($fh);
--
_ | Peter J. Holzer | Nobody should ever have to be
|_|_) | Sysadmin WSR / Obmann LUGA | ashamed if they have a secret love
| | | hjp at wsr.ac.at | for writing computer programs that
__/ | http://wsrx.wsr.ac.at/~hjp/ | actually work. -- Donald E. Knuth
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 371 bytes
Desc: not available
Url : http://mail.pm.org/archives/vienna-pm/attachments/19991126/1dc90a10/attachment.bin
More information about the Vienna-pm
mailing list