【发布时间】:2017-03-26 04:33:22
【问题描述】:
我花了 1.5 天时间尝试创建一个解析 XML 的对象:
<EnvelopeStatus>
<RecipientStatuses>
<RecipientStatus>
<Type>Signer</Type>
<Email>johndoe@gmail.com</Email>
<UserName>Doe, John</UserName>
<Status>Completed</Status>
<CustomFields>
<CustomField>1001</CustomField>
</CustomFields>
</RecipientStatus>
<RecipientStatus>
<Type>Signer</Type>
<Email>maryjane@gmail.com</Email>
<UserName>Jane, Mary</UserName>
<Status>Sent</Status>
<CustomFields>
<CustomField>1002</CustomField>
</CustomFields>
</RecipientStatus>
</RecipientStatuses>
<Status>Completed</Status>
<Id>25b9b7e8-c4c0-4711-a80c-24663f0dc6ed</Id>
<CustomFields>
<CustomField>
<Name>Url</Name>
<Required>False</Required>
<Value>http://google.com</Value>
</CustomField>
<CustomField>
<Name>List</Name>
<Required>False</Required>
<Value>Blue</Value>
</CustomField>
<CustomField>
<Name>ItemId</Name>
<Required>False</Required>
<Value>2</Value>
</CustomField>
</EnvelopeStatus>
RecipientStatuses 可以包含许多 RecipientStatus。 RecipientStatus 内部有一组 CustomFields。理想情况下,单个 CustomField 会提升到与 Type、Email、UserName 等相同的级别。
状态、ID 位于 EnvelopeStatus 下,其中还包含一组自定义字段。此集合中唯一真正需要的节点是“Value”节点,因此理论上,Value 可以提升到与 Status 和 Id 相同的级别。
我尝试了很多不同的方法,现在又回到了原点。有没有办法解析这个xml,以便设置这些类中的属性:
public class Request
{
public string Id { get; set; }
public string Status { get; set; }
public string Url { get; set; }
public string List { get; set; }
public string ItemId { get; set; }
public List<Signer> Signers { get; set; }
}
public class Signer
{
public string Type { get; set; }
public string Email { get; set; }
public string UserName { get; set; }
public int UserId { get; set; }
}
【问题讨论】:
标签: c# xml linq-to-xml xelement