2010-12-03 8 views
3

J'ai créé un projet de base dans lequel j'ai ajouté un fichier xml très simple. Je peux voir le fichier et mon formulaire dans la solution du projet. J'essaye d'écrire le code pour lire le dossier de xml mais je ne peux pas sembler y accéder en tant que studio visuel ne semble pas ramasser que c'est là si cela a un sens? Comment puis-je obtenir à ce fichier afin que je puisse faire quelque chose commeC# XML - Lecture Document XML inclus

XmlDocument doc = new XmlDocument(); 
doc.Load("My document here") 

Merci

+0

Vous pouvez le faire en tant que ressource intégrée ou utiliser la copie toujours –

Répondre

3

Vous voulez dire que vous avez ajouté le fichier XML à la solution? Si c'est le cas, vous devez éditer les propriétés du fichier xml (faites un clic droit dans solution-explorer et sélectionnez les propriétés), et réglez-le pour toujours copier sur build. Cela copiera le fichier xml dans le dossier bin/Debug lors de la construction, et c'est de là que le programme est exécuté. Si ce n'est pas le cas, vous devez changer le chemin du fichier à "../../filename.xml", cela fonctionnera aussi.

Remarque:
Ceci est seulement une solution à votre problème si le fichier xml fait partie de la solution, et le programme ne trouve pas le fichier lorsque vous l'exécutez. Et vous ne devez pas utiliser des chemins absolus.

+0

oui j'ai ajouté le fichier xml à ma solution. J'ai maintenant cliqué droit propriétés sur le fichier xml et définir la copie dans le répertoire de sortie à toujours. Cependant IntelliSense ne prend toujours pas le nom de fichier à moins qu'il ne devrait pas? – tom

+0

Il ne prendra pas le nom du fichier, vous devrez toujours le référencer comme une chaîne, mais maintenant vous pouvez le référencer sans fournir de chemin (car il sera toujours dans le même chemin que l'exécutable de sortie) – BeRecursive

+0

merci très, acceptera dans 2 mins :) – tom

0

Vous devez faire quelque chose le long des lignes de:

using(XmlTextReader reader = new XmlTextReader ("yourfile.xml")) 
{ 

    while (reader.Read()) 
    { 
     switch (reader.NodeType) 
     { 
      case XmlNodeType.Element: // The node is an element. 
       Console.Write("<" + reader.Name); 
       Console.WriteLine(">"); 
       break; 
      case XmlNodeType.Text: //Display the text in each element. 
       Console.WriteLine (reader.Value); 
       break; 
      case XmlNodeType. EndElement: //Display the end of the element. 
       Console.Write("</" + reader.Name); 
       Console.WriteLine(">"); 
       break; 
     } 
    } 
} 

Je suppose que vous voulez analyser le fichier XML après avoir lu dans? Ajoutez le fichier XML en tant que ressource à votre projet (build action = ressource incorporée).

3

Et utiliser:

public static XmlDocument GetEmbeddedXml(Assembly assembly, string fileName) 
    { 
     using (var str = GetEmbeddedFile(assembly, fileName)) 
     { 
      using (var tr = new XmlTextReader(str)) 
      { 
       var xml = new XmlDocument(); 
       xml.Load(tr); 
       return xml; 
      } 
     } 
    } 

    public static Stream GetEmbeddedFile(Assembly assembly, string fileName) 
    { 
     string assemblyName = assembly.GetName().Name; 
     Assembly a = Assembly.Load(assemblyName); 
     Stream str = a.GetManifestResourceStream(assemblyName + "." + fileName); 

     if (str == null) 
      throw new Exception("Could not locate embedded resource '" + fileName + "' in assembly '" + assemblyName + "'"); 
     return str; 

    }