прилагает этот код, который работал до сих пор, как в течение года:Invalid XML во время сериализации
// prepare serializer (XSContent)
XmlSerializer serializer = new XmlSerializer(typeof(XSContent));
using (TextWriter textWriter = new StreamWriter(this.fileName, false, Encoding.UTF8))
{
// prepare the content for xml serialization
XSContent content = new XSContent();
content.UserList = XSConverter.ConvertList<XSUser, TBSUser>(input.UserList);
content.GroupList = XSConverter.ConvertList<XSGroup, TBSGroup>(input.GroupList);
// perform serialization
serializer.Serialize(textWriter, content);
}
Но сегодня, тот же код, я тестировал с большим количеством данных: результат XML становится недействительным (пожалуйста обратите внимание на «остатки» в конце всего содержимого):
<?xml version="1.0" encoding="utf-8"?>
<Content xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<UserList>
<User UserID="CI-0123">
{...}
</User>
{...}
</UserList>
<GroupList>
<Group GroupID="TEST01">
<GroupName>Test</GroupName>
<UserList>
<UserID>CI-0123</UserID>
</UserList>
</Group>
{...}
</GroupList>
</Content>rID>AT-TEST-2348</UserID>
<UserID>AT-TEST-2349</UserID>
<UserID>AT-TEST-2350</UserID>
Это сводит меня с ума, и я застрял. Куда, по вашему мнению, я должен искать? Что я делаю неправильно?
Возможно, важно отметить, что этот xml-файл составляет ~ 200 МБ. Кроме того, если что-то неясно, я мог бы предоставить дополнительную информацию.
EDIT1: Нет существующего файла, который может помешать. В моих тестах файл создается как новый!
EDIT2: Если добавить textWriter.WriteLine("XYZ")
в конце концов, он появляется сразу после того, как </Content>
, но я все еще вижу мусор после XYZ (как: </Content>XYZ>AT-TEST-2348</UserID>
)
EDIT3: Очень странно, когда Я увеличил буфер до 8192, он работал нормально. После этого я вернулся к 4096 году и продолжал нормально работать. Я вижу это FileOptions.SequencialScan, и они пишут: «правильная работа по-прежнему гарантирована». Ну, я начинаю думать, может быть, что-то пошло не так с этим
Благодаря
Интересная мысль, я мог бы попробовать. Благодаря! – Learner
Ну, это не помогает ... такое же поведение ... мм ... Если бы я мог найти значение по умолчанию FileOptions. У меня нет никакой подсказки, если это действительно важно, но SequentialScan звучит хорошо – Learner
Можете ли вы исправить конструктор StreamWriter с момента кодирования 3-го параметра? Кстати, как я могу это увидеть? – Learner