2010-11-09 26 views
0

pourriez-vous s'il vous plaît me signaler, quel est le problème avec le fichier XML suivant?XML. Invalide au niveau supérieur du document. Erreur de traitement des ressources

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <align>right</align> 
    <columns>3</columns> 
    <rows>4</rows> 
    <backgroundColor>#333333</backgroundColor> 
    <circleButtonColor>#666666</circleButtonColor> 
    <currentCircleButtonColor>#000000</currentCircleButtonColor> 
    <textColor>#000000</textColor> 
    <thumbWidth>100</thumbWidth> 
    <thumbHeight>75</thumbHeight> 
    <thumbPadding>10</thumbPadding> 
    <thumbBorder>3</thumbBorder> 
    <thumbBorderColor>#0000F1</thumbBorderColor> 
    <assetWidth>600</assetWidth> 
    <assetHeight>400</assetHeight> 
    <showImageCaption>yes</showImageCaption> 
    <showImageShadow>no</showImageShadow> 
    <target>_self</target> 
</root> 

Et voici l'erreur

Invalid at the top level of the document. Error processing resource 'http://www.example.com/xml/setup.xml'. Line 20, Positi... 

</root> 

Je suis sûr que je pourrais utiliser une pause, mais au cas où je ne le font pas, avant de télécharger le fichier spécifique, je reçois aucune erreur à localhost.

MISE À JOUR: Après avoir vérifié la Xml (Hex), je remarque que le caractère 0x00 (NULL) a été ajouté par magie, après la </root>

En disant magiquement je veux dire ...

Le XML le fichier est créé normalement à localhost. Le caractère NULL est ajoutée par une classe FTP personnalisée, (qui est utilisé pour le téléchargement - en mode binaire), ou autre chose que je ne peux pas imaginer ..

+2

Il ne semble pas y avoir d'erreur avec le XML lui-même. Peut-être que c'est un problème avec votre code? – drudge

+0

Le XML est bon; peut-être que l'analyseur nécessite une déclaration * DOCTYPE *. – frayser

+0

Avez-vous tronqué le message d'erreur? Si oui, pourquoi? La ligne et la position vous disent (et ceux qui essaient de vous aider) où le problème est réel. –

Répondre

1

Au moins j'ai trouvé la source du problème! L'erreur n'a rien à voir avec XML.

Le problème s'est produit dans la classe FTP.

Le code d'origine a été crée l'octet supplémentaire (avec la valeur de 0x00)

Dim fileContents(oFile.Length) As Byte 
Using fr As FileStream = oFile.OpenRead 
    fr.Read(fileContents, 0, Convert.ToInt32(oFile.Length)) 
End Using 

et est celle révisée ici.

Dim Length As Integer = oFile.Length - 1 
Dim fileContents(Length) As Byte 
Using fr As FileStream = oFile.OpenRead 
    fr.Read(fileContents, 0, Convert.ToInt32(oFile.Length)) 
End Using 

Lors du téléchargement d'images, je n'ai rencontré aucun problème avec la classe FTP. Mais quand il s'agit de fichiers XML ...

+0

En fait, je parie que vous étiez en train d'ajouter un caractère nul aux images. Cela n'a juste pas eu d'importance. –

+0

C'est vrai. Puisque les images étaient affichées ... la classe Ftp ne contenait aucune erreur! – OrElse

-2

un document XML sans déclaration DOCTYPE est pas valide

- xml.com

Voir sortie XML valide: y compris les déclarations DOCTYPE à XML.com, à mi-chemin en bas de la page.

+0

Le même paragraphe souligne qu'il s'agit d'une définition assez technique de "valide". Tant qu'il est bien formé, il est "légal". "Valide" dans ce contexte signifie qu'il est conforme à une DTD spécifiée. – GalacticCowboy

+2

-1 vous avez tout simplement tort à ce sujet. –