有一個別人的xml檔案需要反序列化到類,可以看到xml中containmentAttributes 下的value屬性通過命名空間分成了3種。應該是用的泛型寫的。現在我不知道對應的類應該如何寫,求大神指點。
<devices ID="230-00101" Name="平臺管理計算機" lastModifier="3848" modifyTime="2019-12-04 15:10:03" shortName="VMC">
<containmentAttributes key="_KEY_UUID">
<value xsi:type="dmp:DMPString" value="https://bbs.csdn.net/topics/5999ec36-4c10-4d88-b890-cb3b3136a988"/>
</containmentAttributes>
<containmentAttributes key="_KEY_SECRET_LEVEL">
<value xsi:type="dmp:DMPString" value="https://bbs.csdn.net/topics/商密及內部"/>
</containmentAttributes>
<containmentAttributes key="_KEY_ADAPTERCONTAINER_PHYPARA4SIGNAL">
<value xsi:type="com.hirain.icd.metapara:MParaContainer">
<mParas ID="signal_42200-/VMC" Name="signal_42200-/VMC" size="8">
<containmentAttributes key="_KEY_IS_CHANGEABLE_SIGNAL">
<value xsi:type="dmp:DMPString" value="https://bbs.csdn.net/topics/固定長度"/>
</containmentAttributes>
<containmentAttributes key="_KEY_PHYPARA_2SIGNAL">
<value xsi:type="dmp:DMPReferenceArray" values="/0/@devices.0/@softwareAdapters.1/@blocks.0/@signals.0"/>
</containmentAttributes>
</mParas>
<mParas ID="0signal_42200-/VMC" Name="signal_42200-/VMC" size="8">
<containmentAttributes key="_KEY_IS_CHANGEABLE_SIGNAL">
<value xsi:type="dmp:DMPString" value="https://bbs.csdn.net/topics/固定長度"/>
</containmentAttributes>
<containmentAttributes key="_KEY_PHYPARA_2SIGNAL">
<value xsi:type="dmp:DMPReferenceArray" values="/0/@devices.0/@softwareAdapters.1/@blocks.0/@signals.1"/>
</containmentAttributes>
</mParas>
<mParas ID="1signal_42200-/VMC" Name="signal_42200-/VMC" size="8">
<containmentAttributes key="_KEY_IS_CHANGEABLE_SIGNAL">
<value xsi:type="dmp:DMPString" value="https://bbs.csdn.net/topics/固定長度"/>
</containmentAttributes>
<containmentAttributes key="_KEY_PHYPARA_2SIGNAL">
<value xsi:type="dmp:DMPReferenceArray" values="/0/@devices.0/@softwareAdapters.1/@blocks.0/@signals.2"/>
</containmentAttributes>
</mParas>
</value>
</containmentAttributes>
我寫的第一種value的代碼
/// <remarks/>
[Serializable()]
[System.ComponentModel.DesignerCategory("code")]
[System.Xml.Serialization.XmlType(TypeName ="DMPString",AnonymousType = true, Namespace = "http://www.hirain.com/dmp/1.0.0")]
//[System.Xml.Serialization.XmlRoot(Namespace = "http://www.Lincon.com/dmp/1.0.0")]
public partial class containmentAttributesValue
{
private string valueField;
/// <remarks/>
[System.Xml.Serialization.XmlAttribute()]
public string value
{
get
{
return this.valueField;
}
set
{
this.valueField = value;
}
}
}
uj5u.com熱心網友回復:
別沉呀,期待大神~uj5u.com熱心網友回復:
試試 VS自帶的功能 選單欄選擇 編輯 -》 選擇性粘貼-》將XML粘貼為類uj5u.com熱心網友回復:
public static TData DeserializeFromXmlString<TData>(String data)
{
using (StringReader reader = new StringReader(data))
{
XmlSerializer serializer = new XmlSerializer(typeof(TData));
return (TData)serializer.Deserialize(reader);
}
}
uj5u.com熱心網友回復:
public class ContainmentAttributes
{
/// <summary>
///
/// </summary>
public string -key { get; set; }
}
public class Devices
{
/// <summary>
///
/// </summary>
public string -ID { get; set; }
/// <summary>
/// 平臺管理計算機
/// </summary>
public string -Name { get; set; }
/// <summary>
///
/// </summary>
public string -lastModifier { get; set; }
/// <summary>
///
/// </summary>
public string -modifyTime { get; set; }
/// <summary>
///
/// </summary>
public string -shortName { get; set; }
/// <summary>
///
/// </summary>
public ContainmentAttributes containmentAttributes { get; set; }
}
public class Devices
{
/// <summary>
///
/// </summary>
public string -ID { get; set; }
/// <summary>
/// 平臺管理計算機
/// </summary>
public string -Name { get; set; }
/// <summary>
///
/// </summary>
public string -lastModifier { get; set; }
/// <summary>
///
/// </summary>
public string -modifyTime { get; set; }
/// <summary>
///
/// </summary>
public string -shortName { get; set; }
/// <summary>
///
/// </summary>
public Devices devices { get; set; }
}
public class Root
{
/// <summary>
///
/// </summary>
public Devices devices { get; set; }
}
uj5u.com熱心網友回復:
1、先把這個XML檔案轉化為JSON
{
"devices": {
"-ID": "230-00101",
"-Name": "平臺管理計算機",
"-lastModifier": "3848",
"-modifyTime": "2019-12-04 15:10:03",
"-shortName": "VMC",
"devices": {
"-ID": "230-00101",
"-Name": "平臺管理計算機",
"-lastModifier": "3848",
"-modifyTime": "2019-12-04 15:10:03",
"-shortName": "VMC",
"containmentAttributes": { "-key": "_KEY_UUID" }
}
}
}
uj5u.com熱心網友回復:
2、再把JSON轉為C#物體類3、xml=》json 網站:http://www.bejson.com/xml2json/
4、json=》C#類 網站:http://www.bejson.com/convert/json2csharp/
uj5u.com熱心網友回復:
用了,重點是這個xml定義的containmentAttributes 沒有類別,但是下面的value屬性有多種型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/83710.html
標籤:C#
上一篇:ExpressionVisitor決議運算式目錄樹的問題
下一篇:C#呼叫python失敗報錯
