Дубликат:
Исключение всех xml пространств имен при сериализации объекта? Не то же.. Я хочу другим способом: Десериализуйте!У меня есть класс C# как рев:
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.portalfiscal.inf.br/nfe")] [System.Xml.Serialization.XmlRootAttribute("NFe", Namespace = "http://www.portalfiscal.inf.br/nfe", IsNullable = false)] public partial class TNFe { private TNFeInfNFe infNFeField; private SignatureType signatureField; ///
public TNFeInfNFe infNFe { ... Я использую этот класс для сериализирования/десериализовывания XML-файлов пользовательским запросом. Но у меня есть проблема: определение пространств имен было добавлено на новой версии этого программного обеспечения. XML является все еще тем же, только добавляя определение пространств имен.
Например, последняя версия...
... и новая версия...
... Я должен загрузить XML-файлы и без этих пространств имен. У меня есть много вложенных классов, и каждый из него имеет свое собственное определение пространств имен.
Я хотел бы использовать те же классы и для XML, с и без пространств имен.
Я пытался создать XmlTextReader и перезаписать метод NamespaceURI, но я все еще получаю исключение без большого количества информации. Я думаю, что механизм.NET пытается вызвать определение пространства имен класса против XML.
Вы могли бы прочитать файл как текст, удалить текст, нарушающий пространство имен, а затем десериализовать его.
Возможно, вам потребуется записать "хороший" текст обратно в поток [memory/string/etc], чтобы можно было вызвать Deserialize XmlSerializer'а.
Вам нужно реализовать IXmlSerializable, чтобы улучшить пользовательскую сериализацию.