2011-12-15 1 views
0

J'essaye d'analyser un xml en utilisant la méthode parse de DocumentBuilder qui prend l'URI comme argument. Pour cela, je crée un objet String représentant l'URI, puis appelle la méthode parse en passant l'objet String comme argument.SAXParseException lorsque l'URL est inexistante

L'appel de méthode parse fonctionne correctement, renvoie un nouvel objet DOM. Toutefois, lorsque j'essaie d'imprimer l'objet DOM renvoyé, il est indiqué:

org.xml.sax.SAXParseException: Le balisage dans le document qui suit l'élément racine doit être correctement formé. L'extrait de code pour analyser le xml est comme indiqué ci-dessous:

String sURL="http://host:port/myapp/myfile.xml"; 
DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();  
doc = dBuilder.parse(sURL); 

Cependant, lorsque l'URL est un non-existant, la méthode d'analyse syntaxique retourne encore

org.xml.sax. SAXParseException: Le balisage dans le document suivant l'élément racine doit être bien formé.

Le xml est un xml normale, quelque chose comme indiqué ci-dessous:

<?xml version="1.0" encoding="utf-8"?> 
<Data> 
    <ColorMessages> 
     <Message Color="RED">Warning: The batch color level is red. Please check it out!</Message> 
     <Message Color="YELLOW">Alert: This batch color level is yellow. Please stay on alert!</Message> 
     <Message Color="GREEN">Cool: The batch color level is green. Nice!</Message> 
     <Message Color="BLUE">Excellent: The batch color level is blue. Great job!</Message> 
    </ColorMessages> 
</Data> 

Toute réflexion sur la façon dont je pouvais identifier une URL inexistante au cours d'un appel de méthode parse?

Merci.

+0

A quoi ressemble le contenu de monfichier.xml? Il lance probablement une exception IOException en cas d'URL inexistante. http://docs.oracle.com/javase/6/docs/api/javax/xml/parsers/DocumentBuilder.html#parse%28java.lang.String%29 –

+0

Vous avez ajouté l'exemple xml .. – ria

+0

Je suis presque sûr l'exemple de fichier XML que vous avez posté ici n'est pas ce que vous recevez. Suivez la suggestion postée par Bill –

Répondre

2

Personnellement, je préfère configurer la connexion réseau, ou ouvrir le fichier moi-même et juste transmettre le flux au sous-système xml. C'est un peu plus de travail, mais vous pouvez contrôler ce qui se passe. c'est-à-dire que vous n'êtes pas dépendant de ce que quelqu'un d'autre pensait être une bonne idée dans cette situation.

Lorsque vous faites cela, vous devez également vous assurer de fermer les flux. Les bits XML ci-dessous ne font pas l'hypothèse que c'est ce que vous voulez.

Questions connexes