double:
Omitting all xml namespaces when serializing an object? Pas même .. Je veux dans l'autre sens: Désérialise!XML Deserialize sans espaces de noms, mais dans une classe attend des espaces de noms
J'ai une classe C# comme ci-dessous:
[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
{ ...
J'utilise cette classe pour sérialisation/délinéariser fichiers XML demande de l'utilisateur. Mais j'ai un problème: la définition des espaces de noms a été ajoutée sur la nouvelle version de ce logiciel. Le code XML est toujours le même, en ajoutant uniquement la définition des espaces de noms.
Ex., Dernière version ...
<?xml version="1.0" encoding="utf-8" ?>
<NFe>
<infNFe version="1.10">
...
et nouvelle version ...
<?xml version="1.0" encoding="utf-8" ?>
<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
<infNFe version="2.10">
...
J'ai besoin de charger des fichiers XML avec et sans ces espaces de noms. J'ai beaucoup de classes imbriquées et chacune a sa propre définition d'espaces de noms.
Je voudrais utiliser les mêmes classes pour les deux XML, avec et sans espaces de noms.
J'ai essayé de créer un XmlTextReader et d'écraser la méthode NamespaceURI, mais je reçois toujours une exception avec peu d'informations. Je pense que le moteur de .NET essaye de forcer la définition d'espace de noms de classe contre le XML.
Salut, est votre requête résolue? –
Arijit, je l'ai résolu en utilisant une approche différente. Malheureusement, il n'y a aucun moyen de faire ce que je voulais comme je le voulais (en utilisant moins de code que possible). J'ai donc utilisé XmlTextReader pour certains webservices et sur d'autres j'ai sérialisé le Xml entier dans une chaîne et j'ai supprimé les espaces de noms inutilisés en utilisant String.Replace. Ce n'est pas la meilleure chose à faire, mais cela s'est également avéré être une bonne chose. – rodrigogq
Merci pour la réponse, en fait mon problème vous ressemble, la réponse donnée ci-dessous ne fonctionne pas je suppose. Pouvez-vous montrer comment vous l'avez fait? Cela fait 4 ans que Microsoft n'a pas pensé à ça? –