3 Stimmen

C# System.Xml.Serialisierung Selbst verschachtelte Elemente

Ich versuche zu deserialisieren

<graph>
<node>
   <node>
     <node></node>
   </node>
</node>
<node>
   <node>
     <node></node>
   </node>
</node>
</graph>

avec

[XmlRoot("graph")]
class graph
{
   List<Node> _children = new List<node>();

   [XmlElement("node")]
   public Node[] node
   {
      get { return _children.ToArray(); }
      set { foreach(Node n in value) children.add(n) }
   };
}

class Node
{
   List<Node> _children = new List<node>();

   [XmlElement("node")]
   public Node[] node
   {
      get { return _children.ToArray(); }
      set { foreach(Node n in value) children.add(n) }
   };
}

aber es bleibt zu sagen, Objekt nicht erstellt, Null-Referenz angetroffen, wenn Sie versuchen, Kinder-Knoten zu setzen. Was ist oben falsch?

Vielen Dank im Voraus~

1voto

Yuriy Faktorovich Punkte 64670

Ich kann Ihren Fehler nicht reproduzieren. Ich habe den folgenden Code verwendet:

string xml = @"<graph>
<node>
   <node>
     <node></node>
   </node>
</node>
<node>
   <node>
     <node></node>
   </node>
</node>
</graph>";

[XmlRoot("graph")]
public class graph
{
    [XmlElement("node")]
    public Node[] node;
}

public class Node
{
    [XmlElement("node")]
    public Node[] children;
}

XmlSerializer serializer = new XmlSerializer(typeof(graph));

using (MemoryStream stream = new MemoryStream())
using (StreamWriter writer = new StreamWriter(stream))
{
    writer.Write(xml.Replace(Environment.NewLine, String.Empty));
    writer.Flush();
    stream.Position = 0;

    var graph = serializer.Deserialize(stream) as graph;
}

Können Sie posten, was Sie verwenden, um zu deserialisieren?

1voto

csharptest.net Punkte 58070

Ihr Problem liegt in der/den Set-Handler(n), fügen Sie hinzu, wenn nicht null:

set { if(value != null) foreach(Node n in value) children.add(n) }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X