Ich bin derzeit versucht, ein XML mit dem [Serializable()] - Befehlsobjekt zu deserialisieren und ich habe ein Problem. Hier ist der Code Beispiel:Füllen Sie ein Array aus XML-Datei mit Serializable()
using System;
using System.Xml.Linq;
using System.Xml.Serialization;
using System.IO;
namespace XmlManipulation
{
public class XmlManip
{
public static TestCasesList SerializeTest() //test function
{
TestCasesList testslist = null;
string path = @"C:\Users\sxtx2987\Documents\Visual Studio 2015\Projects\FDB\deleteme\test.xml";
XmlSerializer serializer = new XmlSerializer(typeof(TestCasesList));
StreamReader reader = new StreamReader(path);
testslist = (TestCasesList)serializer.Deserialize(reader);
reader.Close();
return testslist;
}
}
[Serializable()]
public class TestCase
{
[System.Xml.Serialization.XmlElement("name")]
public string name;
[System.Xml.Serialization.XmlElement("objective")]
public string objective;
[System.Xml.Serialization.XmlElement("criteria")]
public string criteria;
[System.Xml.Serialization.XmlElement("issue")]
public string issue;
[System.Xml.Serialization.XmlElement("clientcomments")]
public string clientcomments;
[System.Xml.Serialization.XmlElement("authoritycomments")]
public string authoritycomments;
}
[Serializable()]
[XmlType("testcaseslist")]
public class TestCasesList
{
[XmlArray("testcase")]
public TestCase[] TestCase { get; set; }
}
}
Und hier ist die Datei, die ich
<xml version="1.00" encoding="UTF-8">
<campaign>
<name>Test XML</name>
<number>XXXXXG04-06-1</number>
<client>Fictional</client>
<model>Rocket powered boots</model>
<authority>Fictional authority</authority>
</campaign>
<testcaseslist>
<testcase>
<name>TestCase001</name>
<objective>Objective test 1</objective>
<criteria>Pass criteria test 1</criteria>
<issue>Issue Description test 1</issue>
<clientcomments>Client comments test 1</clientcomments>
<authoritycomments>Authority comments test 1</authoritycomments>
</testcase>
<testcase>
<name>TestCase002</name>
<objective>Objective test 2</objective>
<criteria>Pass criteria test 2</criteria>
<issue>Issue Description test 2</issue>
<clientcomments>Client comments test 2</clientcomments>
<authoritycomments>Authority comments test 2</authoritycomments>
</testcase>
</testcaseslist>
</xml>
deserialisieren versuche Was ich versuche, alle Wurzeln Element „Testfall“ zu erreichen, nimmt und jedes Kind Element setzen (namentlich: Name, Ziel, Kriterien, Issue, clientcomments, authoritycomments) in einer Klasse TestCasesList aus mehreren Klassen TestCase.
So in diesem Beispiel:
TestCasesList
| -> Testfall 1
| -> Testfall 2
| -> etc ....
, die enthält alle Elemente des Testfalls.
Der Code, den ich oben habe, ist, was ich bis jetzt sammeln konnte, aber da dies eine ganz bestimmte Aktion ist, die ich versuche zu tun, finde ich nicht alle relevanten Informationen, um mein Problem zu lösen.
Der Code werfen keine Fehler, aber wenn ich versuche, das Funktionsobjekt
TestCasesList test = null;
test = XmlManipulation.XmlManip.SerializeTest();
ich einen leeren Test aufrufen.
Ich denke, dass mein Problem ist die XmlType und XmlArray Abschnitt, aber nach ein paar Stunden der Forschung und Studien, kann ich immer noch nicht die Informationen aus dem XML.
Vielen Dank für Ihre Zeit.
Vielen Dank für Ihre ausführlichen Erklärungen. Nachdem ich mit dem XML-Code herumgespielt hatte, bemerkte ich, dass ich, wenn ich diese Art von Struktur für die Serialisierung verwendete, einfach die Variablennamen verwenden konnte und eine Struktur ohne die [serializable] -Tags verwendete und einfach die public-Variable für die Serialisierung verwendete. Ihre Erklärungen beleuchten jedoch den Mechanismus von XML für mich. Vielen Dank. –