Lecture du fichier XML incorporé c #

Comment lire un fichier XML incorporé – un fichier XML faisant partie d’un projet ac #? J’ai ajouté un fichier XML à mon projet et je veux le lire. Je veux que le fichier XML comstack avec le projet car je ne veux pas que ce soit une ressource visible par l’utilisateur.

Une idée?

  1. Assurez-vous que le fichier XML fait partie de votre projet .csproj. (Si vous pouvez le voir dans l’explorateur de solutions, vous êtes bien.)

  2. Définissez la propriété “Build Action” pour le fichier XML sur “Embedded Resource”.

  3. Utilisez le code suivant pour récupérer le contenu du fichier au moment de l’exécution:

    public ssortingng GetResourceTextFile(ssortingng filename) { ssortingng result = ssortingng.Empty; using (Stream stream = this.GetType().Assembly. GetManifestResourceStream("assembly.folder."+filename)) { using (StreamReader sr = new StreamReader(stream)) { result = sr.ReadToEnd(); } } return result; } 

Chaque fois que vous voulez lire le contenu du fichier, utilisez simplement

 ssortingng fileContents = GetResourceTextFile("myXmlDoc.xml"); 

Notez que “assembly.folder” doit être remplacé par le nom du projet et le dossier contenant le fichier de ressources.

Mettre à jour

En fait, assembly.folder devrait être remplacé par l’espace de noms dans lequel une classe créée dans le même dossier que le fichier XML aurait par défaut. C’est généralement defaultNamespace.folder0.folder1.folder2.....

Vous pouvez également append le fichier XML en tant que ressource, puis adresser son contenu avec Resources.YourXMLFilesResourceName (sous forme de chaîne, à savoir en utilisant un SsortingngReader).

Définissez l’action de génération sur ressource incorporée, puis écrivez ce qui suit:

 using (Stream stream = typeof(MyClass).Assembly.GetManifestResourceStream("MyNameSpace.Something.xml")) { //Read the stream } 

Vous pouvez utiliser Reflector (gratuit à l’ adresse http://www.red-gate.com/products/reflector/ ) pour rechercher le chemin d’access au fichier XML incorporé.

Alors, c’est juste une question de

 Assembly a = typeof(Assembly.Namespace.Class).Assembly; Stream s = a.GetManifestResourceStream("Assembly.Namespace.Path.To.File.xml"); XmlDocument mappingFile = new XmlDocument(); mappingFile.Load(s); s.Close(); 
  1. Ajoutez le fichier au projet.
  2. Définissez la propriété “Build Action” sur “Embedded Resource”.
  3. Accédez-le de cette façon:

     GetType().Module.Assembly.GetManifestResourceStream("namespace.folder.file.ext") 

Notez que la chaîne de nom de la ressource est le nom du fichier, y compris l’extension, précédé de l’espace de nom par défaut du projet. Si la ressource se trouve dans un dossier, vous devez également l’inclure dans la chaîne.

(extrait de http://www.dotnet247.com/247reference/msgs/1/5704.aspx , mais je l’ai utilisé en peson)