Schrift
[thread]8035[/thread]

XML::DOM::Parser: Was wenn XML Fehlerhaft ist?



<< >> 6 Einträge, 1 Seite
GwenDragon
 2006-05-27 16:17
#66799 #66799
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Quote
The XML standard is very clear on the issue of non-compliant documents. An error in parsing any single element (for example a missing end tag) must cause the whole document to be rejected.
Steht z. B. in XML::Simple.

Ich sehe keine Chance, einen XML-Parser dazu zu bringen sich nicht standardgemäß zu benehmen.

Da musst du wohl selbst was schreiben. Sowas wie NoXML::Parser. ;)

Kannst du denn die Leute nicht auf ihre nichtstandard-xml-konformen RSS hinweisen?\n\n

<!--EDIT|GwenDragon|1148732717-->
bsnoop
 2006-05-28 17:27
#66800 #66800
User since
2006-03-30
25 Artikel
BenutzerIn
[default_avatar]
Quote
Da musst du wohl selbst was schreiben. Sowas wie NoXML::Parser


hmm, sowas habe ich schon befürchtet.

Quote
Kannst du denn die Leute nicht auf ihre nichtstandard-xml-konformen RSS hinweisen?


Prinzipiell schon, nur handelt es sich hierbei um ein Portal wo man halt auch die "ich-mache-keinen-XML-konformen-Feed" berücksichtigen sollte ;) und wo es im Prinzip nicht schlimm ist wenn irgendwelche Zeichen im Text vorkommen die dem Parser nicht gefallen (das ist der überwiegende Grund für Fehler).

Quote
Bei XML::LibXML gibt es tatsächlich eine Option, um einige XML-Fehlerarten zu ignorieren.


LibXML hatte ich auch schon ausprobiert. Das hat aber irgendwie auch nicht funktioniert, da teilweise scheinbar absolut unverzeihliche Fehler im XML drin zu sein scheinen. Das Problem bei LibXML war dann sogar noch dass ich die Fehler nicht mit einem eval abfangen konnte, d.h. trotz eval ist das Programm mit einem Software Error abgebrochen worden.

Nun ja, schade, hätte ja sein können das es da irgendwas gibt. Vielleicht muss ich das Portal dann doch dazu bringen sich als Vorreiter in Sachen XML-Standard zu betrachten und die User zum konformen erstellen ihrer Feeds zu erziehen... ;)
renee
 2006-05-31 01:17
#66801 #66801
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
*hat nix mit CGI zu tun*
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bsnoop
 2006-05-26 22:19
#66802 #66802
User since
2006-03-30
25 Artikel
BenutzerIn
[default_avatar]
Moin, moin,

aktuell habe ich ein Skript laufen, dass viele RSS-Feeds einlesen und verarbeiten muss. Das erledige ich mit XML::DOM und das funktioniert soweit auch super.

Wenn jetzt allerdings der Parser auf ein fehlerhaftes XML-Dokument trifft bricht dieser mit Fehlermeldung ab (was ja prinzipiell auch richtig ist).

Nun möchte ich aber gerne auf jeden Fall den Inhalt bestimmter Elemente auslesen, wobei es mir egal ist ob der Inhalt den XML-Standards entspricht. Das bekomme ich irgendwie nicht hin.

Ich kann zwar die Fehlermeldung abfangen mit eval und zum nächsten Feed übergehen, aber die fehlerhaften möchte ich nicht übergehen.

Momentan sieht es wie folgt aus:

Code: (dl )
1
2
3
4
5
6
7
8
$parser =  XML::DOM::Parser->new();
eval {$ResponseDoc = $parser->parse ($feedcontent);};

if($@){
xyz
}

#... hier dann die Verarbeitung wenn es soweit kommt


Eine Option beim initialisieren des Parsers, die den Abbruch im Fehlerfall verhindert habe ich nirgends gefunden (habe alle möglichen XML-Parser ausprobiert).

Gibt es da eine Möglichkeit?
ptk
 2006-05-27 23:08
#66803 #66803
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Bei XML::LibXML gibt es tatsächlich eine Option, um einige XML-Fehlerarten zu ignorieren. Aber der beste Weg ist wohl, den XML-Autoren eins auf die Finger zu geben.
renee
 2006-05-31 01:15
#66804 #66804
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Vielleicht ist ja CPAN:XML::Liberal die Lösung...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 6 Einträge, 1 Seite



View all threads created 2006-05-27 16:17.