Как обрабатывать неизвестные элементы и атрибуты XML во время десериализации с использованием частичного класса? [дублирC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как обрабатывать неизвестные элементы и атрибуты XML во время десериализации с использованием частичного класса? [дублир

Сообщение Anonymous »

Я работаю с XML Deserialization в C#, используя частичный класс для картирования структуры XML. Этот класс генерируется и поддерживается отдельно, поэтому я не могу изменить ее существующую структуру. Я хочу захватить или обработать эти дополнительные поля без изменения существующего частичного класса или влиять на его текущую структуру.
Существует ли способ расширить процесс десериализации (например, использование событий, классов расширения или других механизмов), чтобы я мог справиться с неизвестным содержанием XML? /> Я работаю над тем, чтобы дюреализация XML -файла в модель C# с использованием XMLSerializer. XML выглядит так: < /p>


TEST
TEST

test
test


< /code>
Я определил частичный класс для известных областей, таких как известный атрибут, но я также хочу захватить неизвестные элементы (например, неизвестный атрибут) во время десериализации. < /p>
deserializedModel = XmlHelper.Deserialize(filePath.ToString());
< /code>
Мой пользовательский класс Xmlhelper использует xmlserializer.unknownelement и отражение для захвата неизвестных элементов XML и хранить их в списке. Тем не менее, десериализованная модель не сохраняет и не выявляет эти неизвестные элементы, и я не могу «добавить» или связывать их обратно к модели или ее детям. < /P>
`serializer.UnknownElement += (s, e) =>
{
UnknownElements.Add(new UnknownElementInfo
{
ElementName = e.Element.Name,
ElementValue = e.Element.InnerText,
ParentType = e.ObjectBeingDeserialized?.GetType().Name,
ParentId = e.ObjectBeingDeserialized?.GetType().GetProperty("Id")?.GetValue(e.ObjectBeingDeserialized)?.ToString()
});
};
`
< /code>
Что я попробовал:
Сбор неизвестных элементов через обработчики событий < /p>
Попытка отразить и «добавить» неизвестные данные обратно в десериализованную модель < /p>
то, что я хочу:
- способ захватить и ассоциировать неизвестные элементы XML (включая их родители). /> В идеале они могут быть обнаружены в чем -то вроде дополнительных элементов или словаря ExtensionData на объект. Есть ли чистый способ расширить модель, чтобы поддержать это, или мне нужно вручную ходить и исправить график объекта постмеализации?

Подробнее здесь: https://stackoverflow.com/questions/795 ... on-using-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»