У меня самый простой код в мире,
using (XmlWriter writer = XmlWriter.Create(stringWriter))
{
writer.WriteStartDocument();
writer.WriteStartElement("Board");
writer.WriteAttributeString("Rows", mRows.ToString());
writer.WriteAttributeString("Columns", mColumns.ToString());
writer.WriteEndElement();
writer.WriteEndDocument();
}
TextWriter writer1 = new StreamWriter(path);
writer1.Write(stringWriter.toString());
writer1.Close();
Затем я записываю это в текстовый файл, который выглядит так:
<?xml version="1.0" encoding="utf-16"?>
<Board Rows="30" Columns="50">
</Board>
Затем я делаю следующее:
FileStream str = new FileStream(s.FileName, FileMode.Open);
using(XmlReader reader = XmlReader.Create(stream))
{
reader.Read();
}
И выдает исключение:
«Отсутствует метка порядка байтов Unicode. Невозможно переключиться на Unicode».
Я погуглил исключение и нашел несколько обходных путей, но я не понимаю, зачем мне нужен обходной путь, я просто хочу прочитать написанный мной xml. Может кто-нибудь объяснить, в чем именно проблема? Должен ли я написать что-то по-другому в xml?
Какое самое простое решение для этого?
StreamWriter
не имеет маркера порядка байтов в разделе "Примечания". Не уверен, что понимаю, почему он делает это таким образом, но ясно, почему вы получаете поведение, которое видите. :) - person Chris   schedule 07.07.2013