Ich bin nicht in der Lage, den Namen des Attributs Werte in clsProduct von meinem Xml zu entfernen. Ich habe versucht, [XmlElement(ElementName = "Values", Type = typeof(clsValues)]
für meine List<clsValues>
, aber es gab mir nicht das Ergebnis, das ich brauche.C# Serialisierung Entfernen Attributname aus Ergebnis
Sie können das Ergebnis sehen, das ich unten benötige.
Teile meiner Serialisierung Klasse:
[Serializable]
public class clsProduct
{
[XmlAttribute("ID")]
public string ID { get; set; }
[XmlAttribute("UserTypeID")]
public string UserTypeID { get; set; }
[XmlArrayItem(ElementName = "Values", Type = typeof(clsValues))]
public List<clsValues> Values { get; set; }
}
[Serializable]
public class clsValues
{
[XmlElement(ElementName = "Value")]
public clsValue Value { get; set; }
[XmlArray(ElementName = "MultiValue"),
XmlArrayItem(ElementName = "Value")]
public List<clsValue> MultiValue { get; set; }
}
[Serializable]
public class clsValue
{
[XmlAttribute("AttributeID")]
public string AttributeID { get; set; }
[XmlText]
public string Value { get; set; }
}
Mein aktuelles xml Ergebnis:
<Product ID="PROD-01111010" UserTypeID="Product">
<Values>
<Values>
<Value AttributeID="ATTR-7196">201607280755</Value>
</Values>
<Values>
<Value AttributeID="ATTR-6236">PTFE 125 + 25% GF, Platte</Value>
</Values>
<Values>
<MultiValue>
<Value>PLATTE</Value>
<Value>LUBRIFLON 225</Value>
<Value>PLAQUE</Value>
<Value>LUBRIFLON 22</Value>
</MultiValue>
</Values>
</Values>
</Product>
Ergebnis ich brauche:
<Product ID="PROD-01111010" UserTypeID="Product">
<Values>
<Value AttributeID="ATTR-7196">201607280755</Value>
<Value AttributeID="ATTR-6236">PTFE 125 + 25% GF, Platte</Value>
<MultiValue>
<Value>PLATTE</Value>
<Value>LUBRIFLON 225</Value>
<Value>PLAQUE</Value>
<Value>LUBRIFLON 22</Value>
</MultiValue>
</Values>
</Product>
Kann jemand helfen?
Dank
Edit: Wenn ich verwende
[XmlElement(ElementName = "Values", Type = typeof(clsValues))] public List<clsValues> Values { get; set; }
statt XmlArrayItem
ich dieses Ergebnis:
<Product ID="PROD-01111010" UserTypeID="Product">
<Values>
<Value AttributeID="ATTR-7196">201607280755</Value>
</Values>
<Values>
<Value AttributeID="ATTR-6236">PTFE 125 + 25% GF, Platte</Value>
</Values>
<Values>
<MultiValue>
<Value>PLATTE</Value>
<Value>LUBRIFLON 225</Value>
<Value>PLAQUE</Value>
<Value>LUBRIFLON 22</Value>
</MultiValue>
</Values>
</Product>
Als eine Randnotiz wäre es jetzt eine sehr gute Zeit, das 'cls'-Präfix nicht mehr zu verwenden und den normalen .NET-Namenskonventionen zu folgen. –
@JonSkeet Normalerweise verwende ich keine Präfixe. Ich habe das Projekt nicht erstellt, ich erweitere es und möchte nicht zwei Namenskonventionen in einer Anwendung haben. – remarkies
Nun, ich würde Ihren Kollegen vorschlagen, dass sie dann den Namenskonventionen folgen - und vergessen Sie nicht, dass Sie eine Stack-Overflow-Frage stellen. es muss nicht der genaue Code sein, solange es genau das gleiche Problem zeigt. Das bedeutet, dass Sie es einfacher und konventioneller gestalten können, um Leser weniger abzulenken. –