2014-10-17 3 views
0

Я пытаюсь загрузить xml-файлы из пути в Windows Forms Application.XmlDocument.Load застрял?

public static ClassLayout GetClassLayout() 
    { 
     XmlDocument doc = new XmlDocument(); 
     doc.Load(Environment.CurrentDirectory + @"Files\Class.xml"); 
     return Serializer.XmlDeserialize<ClassLayout>(doc.OuterXml); 
    } 

Но при достижении линии doc.Load она застревает. Я не получаю никаких результатов.

ответ

1

Попытка объединить путь - Environment.CurrentDirectory не заканчивается с «\»

public static ClassLayout GetClassLayout() 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.Load(System.IO.Path.Combine(Environment.CurrentDirectory, @"Files\Class.xml")); 
    return Serializer.XmlDeserialize<ClassLayout>(doc.OuterXml); 
} 
0

Вы, вероятно, добавляющим CurrentDirectory к файлам. Попробуйте:

doc.Load(Environment.CurrentDirectory + @"\Files\Class.xml"); 
1

Во-первых, вы должны быть уверены, что Environment.CurrentDirectory является то, что вы думаете. Если это правильно, проблема в том, что возвращаемое значение, скорее всего, не имеет \ в конце его, поэтому, вероятно, оно ищет что-то вроде C:\WindowsFiles\Class.xml.

Лучший способ для создания каталогов и файлов путей является использование Path.Combine, который будет обрабатывать слешей:

public static ClassLayout GetClassLayout() 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.Load(Path.Combine(Environment.CurrentDirectory, @"Files\Class.xml")); 
    return Serializer.XmlDeserialize<ClassLayout>(doc.OuterXml); 
}