Десериализуйте XML без пространств имен, но в классе, ожидая пространства имен

Дубликат:
Исключение всех 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.

9
задан Community 23 May 2017 в 10:30
поделиться

2 ответа

Вы могли бы прочитать файл как текст, удалить текст, нарушающий пространство имен, а затем десериализовать его.

Возможно, вам потребуется записать "хороший" текст обратно в поток [memory/string/etc], чтобы можно было вызвать Deserialize XmlSerializer'а.

1
ответ дан 4 December 2019 в 13:47
поделиться

Вам нужно реализовать IXmlSerializable, чтобы улучшить пользовательскую сериализацию.

-1
ответ дан 4 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: