Je développe une application de bureau qui lit des éléments XML spécifiques utilisant XPath et les affiche dans des champs de texte dans un Jusqu'à présent, le programme a couru en douceur jusqu'à ce que j'ai décidé de passer un < code> chaîne code> variable dans le fichier si je définis le J'ai fait un peu de googling mais j'ai omis de trouver quoi que ce soit de concret. p> p> jframe code>.
code> classe. p>
xmlfile code> avec un chemin statique (c'est-à-dire écrire manuellement), le programme fonctionne comme prévu. Cependant, au lieu d'écrire un chemin statique, si je passe le chemin comme une variable de chaîne
apath code>, il n'imprime pas les résultats attendus. P>
3 Réponses :
Utilisez simplement les méthodes d'objet intégrées: Vous pouvez également utiliser: p> aussi, si vous avez des problèmes d'esprit HeLe fichier non existant, vérifiez d'abord ensuite: P> File file = new File (aPath);
if(file.exists()) {
//Do your work
}
Bonjour Jason, merci pour l'info. Cependant, je n'ai inséré que les instructions PrintLN pour vérifier les valeurs réelles reçues par les variables locales. Le problème principal que j'ai d'avoir est que document doc = docbuilder.parse (xmlfile); b> ne reçoit pas de chemin de fichier valide pour analyser (ou je suppose donc). Des pensées?
Vérifiez si le chemin existe en premier. Ajout d'exemple pour répondre. 1 seconde.
Bonjour Jason, pas de chance malheureusement. Toujours le même problème que ci-dessus. Je sais que le fichier existe dans le chemin de fichier, sinon la relevé de capture filme un message d'erreur JOPTIONPANE. Merci pour ton aide
Si vous utilisez HOEver, vous n'avez pas besoin d'une regex! Au lieu de cela, utilisez le texte brut basé sur Notez que les noms "remplacer" et "remplacer" sont trompeur: "Remplacer" remplace toujours les événements tous les em> tous les em> ... Le Moron qui a décidé du nom "RetourSeall" aurait dû choisir "RechangeEgex" ou quelque chose de similaire P> Essayez: P> remplailleL () code>
comme ceci chemin.replaceall (" \\ "," / ") code> pour supprimer Les backslashes, il échouera parce que la méthode
remplacement () code> attend un regex em> comme premier paramètre et une seule barre oblique inverse (codé comme
"\\" code " >) est une
remplacement () code>, vous auriez besoin de double-échapper à la barre oblique inverse (une fois pour la chaîne, à nouveau pour la regex) comme ceci
chemin.replaceall ("\\\\" , "/")<_>.
remplacer () code>
méthode comme ceci: p> Edit h3>
path = path.replace("\\\\", "/");
Merci beaucoup pour l'éxplication. J'ai changé de chemin.replaceAll () à path2.replace ("\\", "/"). La sortie lorsqu'elle atteint System.out.println ("chemin de fichier avant d'essayer et de saisir:" + FilePath); b> est - chemin de fichier avant d'essayer et de voir: C: / Documents et paramètres /tanzim.hasan/my documents / xcbl.xml b>, ce qui est parfait parce que c'est où le fichier est.
Cependant, le programme n'a pas réussi à imprimer les résultats sur le JFRAME. Je ne peux pas comprendre ce qui est si différent entre écrire fichier xmlfile = nouveau fichier ("C: \\ documents et paramètres \\ \\ tanzim.hasan \\ mes documents \\ xcbl.xml"); b> et Écriture fichier xmlfile = nouveau fichier (APATH); b> Les deux contiennent une chaîne qui identifie un fichier appelé xcbl.xml b>. Arrgghh!
Il est trop tard pour répondre à cela, mais ... Supprimer "" de mon fichier de configuration aidé
Je veux dire pas ceci p>
Quelle est la valeur de la variable
apath code>? Que vous attendez-vous à imprimer et qu'est-ce qu'il imite à la place. Il n'y a pas de chaînes statiques et dynamiques. Une chaîne est une chaîne. Ce qui est important, c'est ce que les caractères contiennent la chaîne.
Valeur @jbnizet de APATH = 'C: \\ Documents et paramètres \\ \ tanzim.hasan \\ Mes documents \\ xcbl.xml' b> Il est capturé dans une autre classe à l'aide de fichier.getaBsolutepath (); et ensuite en utilisant 'path.replaceall ()' Les caractères d'échappement du barreau arrière sont ajoutés. Je m'attends au document doc = docbuilder.parse (xmlfile); b> Pour recevoir un chemin de fichier valide afin que le fichier puisse analyser à l'aide du documentBuilderFactory. Cependant, il ne fonctionne que si je saisis manuellement le chemin - fichier xmlfile = nouveau fichier ("C: \\ Documents et paramètres \\ \\ tanzim.hasan \\ Mes documents \\ xcbl.xml"); b>
@Tall - J'ai trouvé une erreur possible, qui ne fonctionne à nouveau que si je saisis manuellement le chemin du fichier. document doc = docbuilder.parse (xmlfile); b> si xmlfile b> est remplacé par le chemin de fichier réel qu'il fonctionne. Cependant, quand il est changé de XMLFILE B> à APATH B> échoue à nouveau. FYI, l'échec n'affiche aucune erreur d'erreurs, il affiche simplement un écran vide où les données sont attendues.
Vous ne devriez pas avoir de double backslashes dans votre chaîne. Vous n'en avez besoin que d'une chaîne littéral b> car les backslashes doivent être échappées, mais la chaîne elle-même ne doit contenir que des barres obliques simples.
@Jbnizet Merci pour la clarification et ce que vous avez indiqué a du sens. Cependant (malheureusement), il n'a toujours pas fonctionné. Je supprime le path path.replaceall () b> dans la classe précédente, alors maintenant au lieu d'un littéral à chaîne, la chaîne contient le chemin de fichier simplifié. En outre, j'ai modifié la ligne à document doc = docbuilder.parse (xmlfile); b> à inclure system.out.println ("@ doc" + doc); b> La sortie est - @Doc [#document: NULL] B>. Des pensées?