Deserialisieren Sie XML ohne Namespaces, aber in einer Klasse, die Namespaces erwartet
Duplikat:
Alle XML-Namespaces bei der Serialisierung eines Objekts weglassen? Nicht das Gleiche .. Ich möchte in der anderen Richtung: Deserialisieren!
Ich habe eine C # -Klasse wie folgt:
[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;
/// <remarks/>
public TNFeInfNFe infNFe
{ ...
Ich benutze diese Klasse, um XML-Dateien auf Benutzerwunsch zu serialisieren / zu deserialisieren. Aber ich habe ein Problem: Namensraumdefinitionen wurden in der neuen Version dieser Software hinzugefügt. Das XML ist immer noch dasselbe, es werden nur Namespaces hinzugefügt.
ZB letzte Version ...
<?xml version="1.0" encoding="utf-8" ?>
<NFe>
<infNFe version="1.10">
...
und neue Version ...
<?xml version="1.0" encoding="utf-8" ?>
<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
<infNFe version="2.10">
...
Ich muss XML-Dateien mit und ohne diese Namespaces laden. Ich habe viele verschachtelte Klassen und jede hat ihre eigene Namespace-Definition.
Ich möchte die gleichen Klassen für XML mit und ohne Namespaces verwenden.
Ich habe versucht, einen XmlTextReader zu erstellen und die NamespaceURI-Methode zu überschreiben, erhalte jedoch weiterhin eine Ausnahme ohne viele Informationen. Ich denke, .NET Engine versucht, die Klassennamensraumdefinition gegen das XML zu erzwingen.