2010-12-03 3 views
3

Я создал базовый проект, в который я добавил очень простой XML-файл. Я вижу файл и мою одну форму в решении проекта. Я пытаюсь написать код для чтения XML-файла, но я не могу получить доступ к нему, поскольку визуальная студия, похоже, не собирает ее там, если это имеет смысл? Как я могу получить в этот файл, так что я могу сделать что-то вродеC# XML - чтение включено XML-документ

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

Благодарности

+0

Вы можете сделать это как встроенный ресурс или использовать копию всегда – 2010-12-03 12:18:29

ответ

3

Вы имеете в виду вы добавили XML-файл решения? Если это так, вам нужно отредактировать свойства xml-файла (щелкнуть правой кнопкой мыши в решении-explorer и выбрать свойства) и установить его для копирования в сборке. Это скопирует xml-файл в папку bin/Debug при сборке, и с этого момента запускается программа. Если нет, вам нужно изменить путь к файлу «../../filename.xml», это также сработает.

Примечание:
Это только решение вашей проблемы, если XML-файл является частью решения, а программа не находит файл при запуске. И вы не должны использовать абсолютные пути.

+0

yes Я добавил xml-файл в свое решение. Теперь я щелкнул правой кнопкой мыши по свойствам xml-файла и всегда ставил копию в выходной каталог. Однако intellisense все еще не получает имя файла, если оно не должно? – tom 2010-12-03 12:15:01

0

Вы должны сделать что-то вдоль линий:

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; 
     } 
    } 
} 

Я предполагаю, что вы хотите, чтобы разобрать файл XML после того, как вы прочитали его?

3

Добавьте xml-файл в качестве ресурса для своего проекта (build action = embedded resource). И использовать:

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; 

    } 
Смежные вопросы