【发布时间】:2017-10-05 09:52:54
【问题描述】:
旧版应用程序将数据作为 xml 元素传输。
<frame>
<reply>
<id>value_id</id>
<resultCode>value</resultCode>
<readSampleIDs>
<returnValue>
<Sample>
<SampleID> value_SampleID </SampleID>
<SamplePC> value_SamplePC </SamplePC>
<antennaName> value_antennaName </antennaName>
<channel> value_channel </channel>
<power> value_power </power>
<polarization> value_polarization </polarization>
<inventoried> value_inventoried </inventoried>
</Sample>
…
<Sample>
…
</Sample>
</returnValue>
</readSampleIDs>
</reply>
目前信息是逐字解析字符串提取的。
我认为 xml 元素可以直接使用 XmlSerializer 反序列化为对象,但我对如何做到这一点有些疑问。
frame 元素只包含一个回复。我真的需要两个不同的课程吗?
在 returnValue 内可以有零个或多个 Sample。在我的班级中,正确的类型是 List
当使用 XmlSerializer 序列化对象时,会自动添加有关 xml 版本和根元素的附加属性的信息,例如:
<?xml version="1.0" encoding="utf-8"?>
<PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cpandl.com">
它们没有出现在我的示例代码中,所以我担心反序列化会抱怨它并可能失败。
谢谢 菲利波
【问题讨论】:
-
将您的 XML 上传到 xmltocsharp.azurewebsites.net,让它为您生成类,然后您就可以开始了。
标签: c# xml deserialization