Heim > Backend-Entwicklung > C++ > Wie verhindert man die XML-Serialisierung des Stammelements eines Arrays?

Wie verhindert man die XML-Serialisierung des Stammelements eines Arrays?

Patricia Arquette
Freigeben: 2025-01-02 18:16:39
Original
627 Leute haben es durchsucht

How to Prevent XML Serialization of an Array's Root Element?

Darstellung des Array-Stammelements in der XML-Serialisierung deaktivieren

Bei der XML-Serialisierung kann es vorkommen, dass Sie die Darstellung von deaktivieren müssen das Wurzelelement eines Arrays. Diese Frage veranschaulicht ein Szenario, in dem eine Klasse mit einer Sammlung von Objekten serialisiert wird, was zu einem XML mit einem unerwünschten Stammelement führt.

Lösung:

So deaktivieren Sie das Rendering des Stammelements können Sie das Attribut [XmlArrayItem] durch [XmlElement] in der Sammlungseigenschaft ersetzen. Dadurch wird der Serialisierer angewiesen, die Sammlungselemente direkt zu serialisieren, anstatt sie in ein Stammelement einzuschließen.

Um die unnötigen xsi- und xsd-Namespaces aus dem Stammelement zu entfernen, können Sie außerdem eine Instanz von XmlSerializerNamespaces mit einem Leerzeichen erstellen Namensraum. Diese Namespace-Instanz kann während der Serialisierung übergeben werden, um die Einbeziehung unerwünschter Namespaces zu verhindern.

Beispiel:

Der folgende Codeausschnitt demonstriert die überarbeitete Klassendefinition und den Serialisierungsprozess:

[XmlRoot("SHOPITEM")]
public class ShopItem
{
    [XmlElement("PRODUCTNAME")]
    public string ProductName { get; set; }

    [XmlElement("VARIANT")] // was [XmlArrayItem]
    public List<ShopItem> Variants { get; set; }
}

// ...

XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", ""); // Empty namespace to remove xsi/xsd

XmlSerializer ser = new XmlSerializer(typeof(ShopItem));
ser.Serialize(Console.Out, item, ns);
Nach dem Login kopieren

Mit diesen Änderungen enthält das resultierende XML nicht mehr das Stammelement „Variants“ und es fehlt ihm xsi/xsd-Namespaces. Dadurch wird das Rendern des Stammelements für das Array effektiv deaktiviert.

Das obige ist der detaillierte Inhalt vonWie verhindert man die XML-Serialisierung des Stammelements eines Arrays?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage