C# Deserialisieren von XML zu einem Objekt
Probleme Deserialisieren von xml in ein Objekt in C#.
Den Fehler, den ich erhalten ist...
xmlns=''> was not expected.
XSD, erhielt ich für die Erstellung meiner Klasse ist 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 bin versucht zu importieren 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 denke was passiert ist, dass, wenn .Net versucht derserialize die xml -, es trifft die erste Zeile enthält die "xmlns:ast" und Beschwerden über Sie. Wie ich es verstehe, .Net versuchen, eine Zuordnung von Attributen zu einer öffentlichen Eigenschaft in der Ziel-Klasse (und es nicht finden eines namens xmlns. Oder es ist etwas falsch mit dem, wie ich bin-handling die Namen Räume,.
Meine Deserialisierung-code 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 habe auch versucht verschiedene Kombinationen hinzufügen eines namespace-manager, um das XML-Dokument..
XmlNamespaceManager _Ns = new XmlNamespaceManager(_Doc.NameTable);
_Ns.AddNamespace("ast", "xml.AAAAAAA.com/commerce/apres-vente_technique/assistance");
Ich verstehen, gibt es eine Möglichkeit, die ich verwenden können, dies zu sagen .Net, welche namespaces zu akzeptieren.
Wäre dankbar für etwas Hilfe mit diesem problem.
--- Aktualisiert auf Wunsch mit Klasse-snippet (sorry, hätte vorher), dieses wurde 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önntest du bitte einen post mit dem snippet Ihres ListeAvisRemboursements Klasse...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ohne eine vollständige xsd - /xml-oder (alternativ) Ihre C# - Klassen, die wir nicht reproduzieren können. Aber die Arbeit von xml nach oben, dies funktioniert sehr gut für mich; Bedeutung: der Fehler ist nicht (soweit ich sehen kann) in den code/Daten, die du gepostet hast. Kannst du eine komplette (reproduzierbar) Beispiel?
funktioniert auch mit:
und:
und
Hier ist, was ich verwende (sorry, bin irgendwie zu spät, um die Partei):