J'essaie de décompresser mon fichier XML:
public Object convertFromXMLToObject(String xmlfile) throws IOException {
FileInputStream is = null;
File file = new File(String.valueOf(this.getClass().getResource("xmlToParse/companies.xml")));
try {
is = new FileInputStream(file);
return getUnmarshaller().unmarshal(new StreamSource(is));
} finally {
if (is != null) {
is.close();
}
}
}
Mais je reçois ces erreurs: Java.io.FileNotFoundException: null (Aucun fichier ou répertoire de ce type)
Voici ma structure:
Pourquoi je ne peux pas obtenir de fichiers du dossier de ressources? Merci.
Mise à jour.
Après refactoring,
URL url = this.getClass (). GetResource ("/ xmlToParse/companies.xml"); Fichier Fichier = Nouveau Fichier (url.getPath ());
Je peux voir une erreur plus clairement:
Java.io.FileNotFoundException: /content/ROOT.war/WEB-INF/classes/xmlToParse/companies.xml (Aucun fichier ou répertoire de ce type)
Il essaie de trouver WEB-INF/classes/j’ai ajouté un dossier là-bas, mais je reçois toujours cette erreur :(
J'ai eu le même problème en essayant de charger des fichiers XML dans mes classes de test. Si vous utilisez Spring, comme vous pouvez le suggérer à partir de votre question, le moyen le plus simple consiste à utiliser org.springframework.core.io.Resource - celui Raphael Rot h déjà mentionné. .
Le code est vraiment simple. Déclarez simplement un champ du type org.springframework.core.io.Resource et annotez-le avec org.springframework.beans.factory.annotation.Value - comme ça:
@Value(value = "classpath:xmlToParse/companies.xml")
private Resource companiesXml;
Pour obtenir le InputStream nécessaire, appelez simplement
companiesXml.getInputStream()
et ça devrait aller :)
Mais pardonnez-moi, je dois poser une question: pourquoi voulez-vous implémenter un analyseur XML à l'aide de Spring? Il y a beaucoup de construction dans :) par exemple. pour les services Web, il existe de très bonnes solutions qui regroupent vos XML dans Java Objects and back ...
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("fileName").getFile());
vous êtes supposé donner un chemin absolu (ajoutez donc un chargement ´/´, où resource-folder est le dossier racine):
public Object convertFromXMLToObject(String xmlfile) throws IOException {
FileInputStream is = null;
File file = new File(String.valueOf(this.getClass().getResource("/xmlToParse/companies.xml")));
try {
is = new FileInputStream(file);
return getUnmarshaller().unmarshal(new StreamSource(is));
} finally {
if (is != null) {
is.close();
}
}
}