SAXException: le Contenu n'est pas autorisé dans la section de fuite
Cela me rend fou. J'ai utilisé ce morceau de code pour les lots de différents projets, mais c'est la première fois qu'il m'avait donné ce type d'erreur. C'est tout le fichier XML:
<layers>
<layer name="Layer 1" h="400" w="272" z="0" y="98" x="268"/>
<layer name="Layer 0" h="355" w="600" z="0" y="287" x="631"/>
</layers>
Voici le mode opératoire de code dans mon homebrew de la classe Xml qui utilise le DocumentBuilderFactory pour parser le Xml de la fed:
public static Xml parse(String xmlString)
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
Document doc = null;
//System.out.print(xmlString);
try
{
doc = dbf.newDocumentBuilder().parse(
new InputSource(new StringReader(xmlString)));
//Get root element...
Node rootNode = (Element) doc.getDocumentElement();
return getXmlFromNode(rootNode);
} catch (ParserConfigurationException e)
{
System.out.println("ParserConfigurationException in Xml.parse");
e.printStackTrace();
} catch (SAXException e)
{
System.out.println("SAXException in Xml.parse ");
e.printStackTrace();
} catch (IOException e)
{
System.out.println("IOException in Xml.parse");
e.printStackTrace();
}
return null;
}
Le contexte que j'utilise c'est: projet d'école, afin de produire un type Photoshop logiciel de manipulation d'images. Le fichier est sauvegardé avec les calques .png et ce fichier xml pour la position, etc. des couches dans un .fichier zip. Je ne sais pas si la compression est d'ajouter quelques mystérieux caractères supplémentaires ou pas.
J'apprécie vos commentaires.
xmlString
variable? Avez-vous peut-être avoir plusieurs éléments racines? Vous pouvez également poster le code qui génère le contenu de xmlString
.Merci pour cette question et la réponse. Je suis d'accord avec GenericJam - c'est lié à la mémoire tampon. Par défaut, tous les bits sont à 0 (zéro) et un appel à " zipFile.getInputStream(xmlZipFile).read(buffer) "sera de remplacer le premier" n " de ces octets. Cependant, le dernier 0-octets seront considérées comme des "contenu" dans le document XML.
OriginalL'auteur GenericJam | 2012-12-03
Vous devez vous connecter pour publier un commentaire.
Si vous regardez le fichier dans un éditeur de texte, vous verrez le contenu (peut-être des espaces) à la suite de la fin de l'élément, par exemple
Il vaut la peine de dumping de ce à l'aide d'un outil qui permettra de mettre en évidence les espaces caractères par exemple
d'un dumping de la "non imprimables" des personnages.
trim() supprime les espaces. Si les caractères de fin ne sont pas considérés comme des espaces, cette méthode n'aura aucun effet.
Agnew, j'obtiens l'erreur, même si j'ai une simple page JSP, AJAX réponse avec le texte "ABC" (pas d'attaque et de fuite des espaces). Veuillez suggérer des modifications
J'ai eu le même problème et les paramètres
cat
avez le charme pour moi. Essayez d'observer où est le dernier$
qui symbolise la fin de ligne.OriginalL'auteur Brian Agnew
Espérons que cela peut être utile à quelqu'un, à un certain point. Le correctif qui a travaillé était juste pour utiliser lastIndexOf() avec sous-chaîne. Voici le code in situ:
}
Merci pour toutes les personnes qui ont contribué. Je crois que l'erreur a été introduit par le zip processus ou en utilisant le byte[] buffer. Toute la rétroaction est apprécié.
OriginalL'auteur GenericJam
J'avais un peu de char à la fin de XML, consultez le XML correctement ou de faire un format en ligne de XML , qui lancera d'erreur si le fichier XML n'est pas bon. J'ai utilisé
En ligne XML Formateur
OriginalL'auteur Chinmoy
J'ai juste eu cette erreur en livres Sterling Integrator - quand j'ai regardé le fichier dans un éditeur hexadécimal
il y avait environ 5 lignes supplémentaires de char(0), pas d'espace. Aucune idée d'où qu'ils viennent, mais c'était précisément la question, surtout que je faisait une unité de transformation, de sorte que le moteur xsl - dans ce cas, xalan, est à l'évidence la faisant passer à travers dans le résultat. Retiré des lignes supplémentaires après la dernière près de l'angle du support, le problème est résolu.
OriginalL'auteur walbury