将xml字符串反序列化为c#对象
我已从Refit rest服务(WorkflowMax API)返回此XML:将xml字符串反序列化为c#对象,c#,xml,refit,C#,Xml,Refit,我已从Refit rest服务(WorkflowMax API)返回此XML: OKJ00002Callout 20970938BIG共同计划2019-04-25T00:00:0022019-06-01T00:00:0012918947A Smith34476268787929T Smith787929T SmithJ00003致电20982774测试小组计划2019-04-25T00:00:0022019-04-25T00:00:0012924082S Smith34476286787929T
OKJ00002Callout 20970938BIG共同计划2019-04-25T00:00:0022019-06-01T00:00:0012918947A Smith34476268787929T Smith787929T SmithJ00003致电20982774测试小组计划2019-04-25T00:00:0022019-04-25T00:00:0012924082S Smith34476286787929T Smith787929
我希望转换为多个C#作业对象。有人能提出一个简单的方法吗
尝试使用visual studio Paste Special“将XML粘贴为类”并仅粘贴在XML的单个“作业”部分,它生成了一个相当复杂的类,但不确定如何反序列化到它随后生成的类中。使用此方便的网站生成简单的类,您可以稍后使用这些类对XML进行序列化或反序列化,以:
https://xmltocsharp.azurewebsites.net/
我将使用内置的XML序列化程序类来序列化或反序列化您的类/XML:https://docs.microsoft.com/en-us/dotnet/api/system.xml.serialization.xmlserializer?view=netframework-4.8
一些示例代码:
using (TextReader reader = new StreamReader(path))
{
XmlSerializer serializer = new XmlSerializer(typeof(Job));
return (Job)serializer.Deserialize(reader);
}
谢谢,为了得到作业,我必须先删除XML的外部部分。正确的解决方案是创建一个类响应,然后将XML反序列化为typeof(RESPONSE)。当然,响应可以用作外部类,然后可以将XML反序列化到此类。VisualStudio中的FXCOP analyzer发出警告:警告CA5369此“XmlSerializer.Deserialize”方法的重载可能不安全。它可能启用易受拒绝服务攻击的文档类型定义(DTD),或者可能使用易受信息泄露攻击的XmlResolver。使用一个重载来代替XmlReader实例,禁用DTD处理并且没有XmlResolver。
using (TextReader reader = new StreamReader(path))
{
XmlSerializer serializer = new XmlSerializer(typeof(Job));
return (Job)serializer.Deserialize(reader);
}