Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将xml字符串反序列化为c#对象_C#_Xml_Refit - Fatal编程技术网

将xml字符串反序列化为c#对象

将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

我已从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 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);
}