Serialisiert, Deserialisiert, Hängen, Get, Delete-Objekt in die XML-Datei mit C#
Habe ich die folgende Klasse
[Serializable]
public class Product
{
public Product() { }
public string ProductID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
Ich möchte erstellen Sie eine XML-Datei aus. wenn die Produkt-id vorhanden ist, aktualisieren Sie die Knoten andere Weise hinzufügen, oder fügen Sie die Knoten in der xml-Datei.
ich bin mit dem folgenden code zum serialisieren von Objekt
public void SerializeNode(object obj, string filepath)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
var writer = new StreamWriter(filepath);
serializer.Serialize(writer.BaseStream, obj);
}
aber er erstellt die Datei jedes mal von vorne, also wenn die Daten existieren, in der Datei es overwites es mit neuen.
so, ich bin auf der Suche nach Mechanismus, wo es hinzufügen/Anhängen von Knoten in xml, bekommen die Knoten basierend auf ProductID, und löschen Sie die Knoten.
Die Klasse kann erweitert werden mit mehr Daten-Mitglieder, damit der code sollte dynamisch sein, damit ich nicht haben, um geben Sie die Kind-Elemente im code, ich möchte es nur in der Klasse level.
hoffe jemand kann helfen
die Struktur, die ich Suche, ist wie folgt
<?xml version="1.0" encoding="utf-8"?>
<Products>
<Product ProductID="1">
<Name>Product Name</Name>
<Description>Product Description</Description>
</Product>
<Product ProductID="2">
<Name>Product Name</Name>
<Description>Product Description</Description>
</Product>
<Product ProductID="3">
<Name>Product Name</Name>
<Description>Product Description</Description>
</Product>
</Products>
- Verwenden Sie die IRepository-Muster; stackoverflow.com/questions/4528712/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich nicht das problem:
Sollte Ihnen den Einstieg in eine bessere Richtung, nämlich manuell serialisieren mit XElement
Nun, Sie sollten in der Lage sein, um herauszufinden, wie deserialise diese. Sie können auch laden Sie einfach die ganze Sache wieder in Erinnerung und zu aktualisieren, mit neuen Produkten und dann erneut zu speichern. Wenn Sie haben so viele Produkte, dass Sie dies nicht tun, dann brauchen Sie eine Datenbank statt XML.
Hier, falls Sie sich nicht sicher, wie Sie Sie zu Deserialisieren, können Sie dies tun:
und für die
XmlSerialize()
undXmlDeserialize()
die Sie oben sehen, verwenden Sie diese Erweiterung-Methoden, die ich schrieb ein paar Jahre zurück:Ich hoffe, dass dies nützlich ist. Wenn nicht, geben Sie uns bitte mehr info über deine situation als bereits angefordert.