Probleme beim Deserialisieren einiger XML in ein Objekt in C#.C# Deserialize XML zu Objekt
Der Fehler, die ich erhalte ist ...
xmlns=''> was not expected.
Die XSD, die ich erhielt meine Klasse zu erzeugen, wie folgt ...
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="xml.AAAAAAA.com/commerce/apres-vente_technique/assistance" xmlns:pgp="xml.AAAAAAA.com/commerce/apres-vente_technique/assistance" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="ListeAvisRemboursements">
<xs:annotation>
<xs:documentation>Liste des avis de remboursements</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="AvisRemboursement" type="pgp:AvisRemboursementType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="AvisRemboursementType">
<xs:annotation>
<xs:documentation>Avis de remboursement lié à une DC</xs:documentation>
</xs:annotation>
<xs:sequence>
(snipped)
Die Datei, die ich zu importieren versuche, ist wie folgt:
<?xml version="1.0" encoding="UTF-8"?>
<ListeAvisRemboursements xmlns:ast="xml.AAAAAAA.com/commerce/apres-vente_technique/assistance">
<ast:AvisRemboursement NumeroDT="3826961" CodeRA="020545G01" NumeroDC="1">
<ast:DateTraitement>2010-06-22</ast:DateTraitement>
<ast:MontantDC>25.0</ast:MontantDC>
<ast:MontantMO>0.0</ast:MontantMO>
<ast:SommeAD>25.0</ast:SommeAD>
<ast:MontantPR>0.0</ast:MontantPR>
<ast:SommePR>0.0</ast:SommePR>
<ast:FraisGestion>0.0</ast:FraisGestion>
<ast:NombreHeuresTotalRemboursees>0</ast:NombreHeuresTotalRemboursees>
<ast:Etat>C</ast:Etat>
<ast:NoteCredit>319984</ast:NoteCredit>
<ast:Imputation>030</ast:Imputation>
<ast:ListInterventionsPR/>
<ast:ListInterventionsMO/>
</ast:AvisRemboursement>
(snipped)
ich denken, was passiert ist, dass, wenn .Net das xml derserialize versucht, es die erste Zeile trifft, die die enthält „xmlns: ast“ und Beschwerden darüber. Wie ich es verstehe, wird .Net versuchen, Attribute einer öffentlichen Eigenschaft in der Zielklasse zuzuordnen (und es wird keine namens xmlns finden. Oder es ist etwas falsch damit, wie ich die Namensräume handhabe.
Mein Deserialisierungscode sieht wie folgt aus:
XmlDocument _Doc = new XmlDocument();
_Doc.Load(@"C:\inputfile.xml");
XmlSerializer _XMLSer = new XmlSerializer(typeof(ListeAvisRemboursements));
ListeAvisRemboursements _X = (ListeAvisRemboursements)_XMLSer.Deserialize(new StringReader(_Doc.OuterXml));
ich auch .Net verschiedene Kombinationen von Hinzufügen eines Namespace-Manager zum XML-Dokument ..
XmlNamespaceManager _Ns = new XmlNamespaceManager(_Doc.NameTable);
_Ns.AddNamespace("ast", "xml.AAAAAAA.com/commerce/apres-vente_technique/assistance");
ich verstehe, gibt es eine Weise, die ich diese verwenden können, zu sagen versucht haben, was Namespaces zu akzeptieren
Wäre für einige Hilfe mit diesem Problem dankbar.
--- Aktualisiert Anfrage mit Klasse-Schnipsel (sorry, bevor aufgenommen haben sollte) diese mit xsd.exe ---
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "xml.AAAAAAA.com/commerce/apres-vente_technique/assistance")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "xml.AAAAAAA.com/commerce/apres-vente_technique/assistance", IsNullable = false)]
public partial class ListeAvisRemboursements
{
private AvisRemboursementType[] avisRemboursementField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("AvisRemboursement")]
public AvisRemboursementType[] AvisRemboursement
{
get
{
return this.avisRemboursementField;
}
set
{
this.avisRemboursementField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "xml.AAAAAAA.com/commerce/apres-vente_technique/assistance")]
public partial class AvisRemboursementType
{
private System.DateTime dateTraitementField;
private double montantDCField;
private double montantMOField;
private double sommeADField;
private double montantPRField;
könnten Sie bitte das Snippet Ihrer ListeAvisRemourseements-Klasse posten ... – RameshVel