如何为自定义 XML 格式定义类结构
Posted
技术标签:
【中文标题】如何为自定义 XML 格式定义类结构【英文标题】:How to define class structure for custom XML format 【发布时间】:2021-10-15 00:20:47 【问题描述】:您好,我定义了需要从对象序列化的 xml 格式。 我的 XML 看起来像:
<PerfCheckConsidered>
<PerfMarker PercentageIncrease="21.4171662006946" MaxValue="6650.55" MinValue="5477.438" TS_09082021093913="5961.733" TS_09082021093646="6650.55" TS_09082021093358="5477.438" TS_09082021093136="5510.135" TS_09082021092614="5768.742" PerfMarkerName="Marker1"/>
<PerfMarker PercentageIncrease="20.9911157408996" MaxValue="7371.881" MinValue="6092.911" TS_09082021093913="7371.881" TS_09082021093646="6092.911" TS_09082021093358="6345.139" TS_09082021093136="6289.624" TS_09082021092614="6782.205" PerfMarkerName="Marker1"/>
<PerfMarker PercentageIncrease="9.22930544021455" MaxValue="6183.199" MinValue="5660.751" TS_09082021093913="6183.199" TS_09082021093646="5660.751" TS_09082021093358="6000.608" TS_09082021093136="5951.08" TS_09082021092614="5870.288" PerfMarkerName="Marker1"/>
<PerfMarker PercentageIncrease="25.0711884164738" MaxValue="10075.0518" MinValue="8055.4538" TS_09082021093913="10062.1176" TS_09082021093646="10061.7749" TS_09082021093358="10075.0518" TS_09082021093136="8055.4538" TS_09082021092614="10063.9758" PerfMarkerName="Marker2"/>
<PerfMarker PercentageIncrease="13.2855819181415" MaxValue="8250.0617" MinValue="7282.5346" TS_09082021093913="8237.9737" TS_09082021093646="8245.9522" TS_09082021093358="8240.958" TS_09082021093136="8250.0617" TS_09082021092614="7282.5346" PerfMarkerName="Marker2"/>
<PerfMarker PercentageIncrease="29.7888969731873" MaxValue="50.4823" MinValue="38.8957" TS_09082021093913="50.4823" TS_09082021093646="46.8748" TS_09082021093358="38.8959" TS_09082021093136="38.8957" TS_09082021092614="40.8915" PerfMarkerName="Marker3"/>
<PerfMarker PercentageIncrease="54.5326940955576" MaxValue="16.9544" MinValue="10.9714" TS_09082021093913="11.9676" TS_09082021093646="12.9662" TS_09082021093358="16.9544" TS_09082021093136="10.9714" TS_09082021092614="10.9714" PerfMarkerName="Marker3"/>
<PerfMarker PercentageIncrease="14.028196761682" MaxValue="64.8256" MinValue="56.8505" TS_09082021093913="60.8377" TS_09082021093646="62.8326" TS_09082021093358="56.8505" TS_09082021093136="59.2591" TS_09082021092614="64.8256" PerfMarkerName="Marker3"/>
<PerfMarker PercentageIncrease="8.33604893089013" MaxValue="25.9311" MinValue="23.9358" TS_09082021093913="25.9311" TS_09082021093646="23.9358" TS_09082021093358="25.93" TS_09082021093136="25.9306" TS_09082021092614="24.9344" PerfMarkerName="Marker3"/>
</PerfCheckConsidered>
在上面的 XML 中,TagName 像 TS_09082021093913,TS_09082021093646,TS_09082021093136,TS_09082021092614 在编译时是未知的,这些是由本地磁盘中存在的文件名形成的时间戳名称。
我应该如何定义我的对象结构来填充这种数据
当前类看起来像(从这个结构中我无法获得所需的 xml 格式)
public class PerfCheck
public string PerfMarkerName get; set;
public string PercentageIncrease get; set;
public string MaxValue get; set;
public string MinValue get; set;
public string Marker get; set;
public List<TimeStampToInstances> TimeStampToMarkerValues get; set;
[Serializable]
public class TimeStampToInstances
public string TimeStamp get; set;
public List<double> InstancesValues get; set;
目前我正在使用我的自定义逻辑来形成 XML,但我被告知使用普通的 xml 序列化并尝试修改类结构以适应 xml 格式 这可能吗?
【问题讨论】:
请参阅:XmlAnyAttributeAttribute - 但是,您的类似乎与显示的 xml 没有任何共同之处 到目前为止,我的值低于 List感谢大家的宝贵意见。
我能够通过使用动态对象来实现所需的 XML 格式。 我将我的动态对象序列化为中间 XML,从中创建了所需格式的 XML。
【讨论】:
以上是关于如何为自定义 XML 格式定义类结构的主要内容,如果未能解决你的问题,请参考以下文章