2017-11-30 18 views
1

Ich versuche, das XML zu deserialisieren, das die Liste der ID enthält, aber es gibt mir den Fehler "Ich kann keine temporäre Klasse generieren (Ergebnis = 1)", bitte hilf mir. Unten ist mein xml-Dateiformat:Wie Deserialisieren XML-Datei, die Liste enthält?

<?xml version="1.0" encoding="UTF-8"?> 
<identifiers> 
<Module Name="Doors_Module1" Path="Doors_Module1 "> 
    <id value="16"/> 
    <id value="15"/> 
    <id value="14"/> 
    <id value="13"/> 
    <id value="12"/> 
    <id value="11"/> 
    <id value="10"/> 
    <id value="9"/> 
    <id value="17"/> 
    <id value="8"/> 
    <id value="7"/> 
    <id value="6"/> 
    <id value="5"/> 
    <id value="4"/> 
    <id value="3"/> 
    <id value="2"/> 
    <id value="1"/> 
</Module> 
</identifiers> 

und unten ist meine Klasse für Deserialize dass xml:

public class HelperAllIdentifiers 
{ 
    [Serializable, XmlRoot("identifiers")] 
    public class identifiers 
    { 
     public Module Module { get; set; } 

    } 
    [XmlRoot("Module")] 
    public class Module 
    { 
     [XmlAttribute("Name")] 
     public string Name 
     { 
      get; 
      set; 
     } 

     [XmlArrayItem("id", Type = typeof(Attribute))] 
     public List<IdValue> FieldList;// { get; set; } 
     public Attribute[] ids { get; set; } 
    } 

    [XmlRoot("id")] 
    public class IdValue 
    { 
     [XmlAttribute("value")]// Type=typeof(Attribute))] 
     public string Value { get; set; } 
    } 
} 

Vielen Dank im Advanced.

+0

Ich bin nicht sicher, ob dies die Ursache ist, aber Ihr Modul Klasse unterscheidet sich von dem Inhalt der XML-Datei: Es gibt keine Eigenschaft, die auf das Attribut reagiert " Pfad". – royalTS

+0

Eigentlich brauche ich in meinem Ergebnis nicht das Attribut "Pfad". Deshalb verwende ich dieses Attribut nicht in meiner Klasse. – Vivek

Antwort

0

folgenden Code für mich gearbeitet:

using System; 
using System.Xml.Serialization; 
using System.Collections.Generic; 
using System.IO; 

namespace ConsoleWinForm 
{ 
    [XmlRoot(ElementName = "id")] 
    public class Id 
    { 
     [XmlAttribute(AttributeName = "value")] 
     public string Value { get; set; } 
    } 

    [XmlRoot(ElementName = "Module")] 
    public class Module 
    { 
     [XmlElement(ElementName = "id")] 
     public List<Id> Id { get; set; } 
     [XmlAttribute(AttributeName = "Name")] 
     public string Name { get; set; } 
     [XmlAttribute(AttributeName = "Path")] 
     public string Path { get; set; } 
    } 

    [XmlRoot(ElementName = "identifiers")] 
    public class Identifiers 
    { 
     [XmlElement(ElementName = "Module")] 
     public Module Module { get; set; } 
    } 

    public class Program 
    { 
     public static void Main() 
     { 
      string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?> 
          <identifiers> 
          <Module Name=""Doors_Module1"" Path=""Doors_Module1 ""> 
           <id value=""16""/> 
           <id value=""15""/> 
           <id value=""14""/> 
           <id value=""13""/> 
           <id value=""12""/> 
           <id value=""11""/> 
           <id value=""10""/> 
           <id value=""9""/> 
           <id value=""17""/> 
           <id value=""8""/> 
           <id value=""7""/> 
           <id value=""6""/> 
           <id value=""5""/> 
           <id value=""4""/> 
           <id value=""3""/> 
           <id value=""2""/> 
           <id value=""1""/> 
          </Module> 
          </identifiers>"; 

      using (var rdr = new StringReader(xml)) 
      { 
       var srlzr = new XmlSerializer(typeof(Identifiers)); 
       var result = srlzr.Deserialize(rdr) as Identifiers; 
      } 
     } 
    } 
} 
+0

Heres ist was ich mache, wenn ich Xml zu einer C# -Klasse serialisieren muss. http://xmltocsharp.azurewebsites.net/ –

+0

Vielen Dank für Ihre schnelle Antwort prateek, aber jetzt bekomme ich Fehler: Unbehandelte Ausnahme: System.InvalidOperationException: Es ist ein Fehler in XML-Dokument (2, 2). ---> System.InvalidOperationException: wurde nicht erwartet. – Vivek

+0

Meine Antwort wurde mit dem Arbeitscode aktualisiert. –

Verwandte Themen