2010-06-16 6 views
0

Si je suis en utilisant le XML :: Parser libxml pour appeler à plusieurs reprises une ligne comme ce qui suit ...XML Perl :: Parser LibXML Erreur

$tree = $parser->parse_file($WBCall); 

... où WBCall $ représente une chaîne HTTP à un service qui renvoie des données au format XML, puis parfois je reçois une erreur comme suit: ": 1: erreur d'analyseur: balise de démarrage attendue, '<' introuvable"

Cela se produit rarement lorsque le code extrait des centaines de Fichiers de données XML. Cela signifie-t-il que j'ai besoin d'ajouter une validation XML? Si oui, quel est le meilleur module Perl pour cela?

+3

Que voulez-vous dire? Si elle n'analyse pas, alors vous avez validé que ce n'est pas valide. Si vous voulez attraper l'erreur, utilisez eval: mon $ document = eval {$ parser-> parse_file ($ WBCall)} ou avertissez "Error: $ @" – runrig

Répondre

1

Il semble que vous receviez occasionnellement une réponse avec un corps vide ou une sorte de réponse "serveur occupé".

Lorsque vous dites "$ WBCall représente une chaîne HTTP à un service qui renvoie des données au format XML" voulez-vous dire qu'il contient un URI? Si c'est le cas, vous pourriez peut-être faire vous-même la requête HTTP en utilisant LWP, puis appeler le $parser->parse_string($response->content). En cas d'erreur (attraper avec eval) vous pouvez vous connecter $response->as_string.