有3个这样的班级
public class Product
{
public string ProudctId { get; set; }
public string ProductName { get; set; }
}
public class Owner
{
public string OwnerId { get; set; }
public string OwnerName { get; set; }
}
public class Master
{
public string MasterId { get; set; }
public string MasterName { get; set; }
}
我设法将这些对象转换为XML字符串。现在,我想从XML获取原始对象。 XML如下所示:
<ProjectDetails>
<Product>
<ProductId>1</ProductId>
<ProductName>Product 1</ProductName>
</Product>
<Owner>
<OwnerId>1</OwnerId>
<OwnerName>Owner 1</OwnerName>
</Owner>
<Master>
<MasterId>1</MasterId>
<MasterName>Master 1</MasterName>
</Master>
</ProjectDetails>
问题是,如何将上述xml转换为3个对象?某些对象的数据可能无法在XML中使用。例如主节点在XML中可能可用,也可能不可用。根节点名称是固定的(ProjectDetails)。
我们非常感谢您的帮助。
答案 0 :(得分:0)
containerd
或者,如果您希望分别对var yourXML = @"<ProjectDetails>
<Product>
<ProductId>1</ProductId>
<ProductName>Product 1</ProductName>
</Product>
<Owner>
<OwnerId>1</OwnerId>
<OwnerName>Owner 1</OwnerName>
</Owner>
<Master>
<MasterId>1</MasterId>
<MasterName>Master 1</MasterName>
</Master>
</ProjectDetails>"
XmlSerializer serializer = new XmlSerializer(typeof(ProjectDetails));
using (TextReader reader = new StringReader(yourXML)) {
ProjectDetails result = (ProjectDetails) serializer.Deserialize(reader);
}
,Product
,Owner
进行反序列化,请将Master
替换为您要反序列化的类型。或创建一个通用的辅助函数来反序列化任何类型。 (请参阅https://stackoverflow.com/a/3187539/6419909)
这称为反序列化对象,在您的情况下称为XML反序列化。参见How to deserialize xml to object进行进一步的讨论。