问题描述
我在将 XML 转换为 SOAP 服务中的 C# 对象时遇到了问题(我认为)。 鉴于此 XML 片段:
<Weasleys>
<Child>
<Name>Ron</Name>
<Age>11</Age>
</Child>
<Child>
<Name>Fred</Name>
<Age>13</Age>
</Child>
<Child>
<Name>George</Name>
<Age>13</Age>
</Child>
</Weasleys>
public class Weasley
{
public List<Child> Weasleys {get; set;}
}
public class Child
{
public string Name {get; set;}
public string Age {get; set;}
}
我的方法(释义)是GetPeople(Weasley input)
。这有效(我正在使用 SoapUI 进行测试)
我的问题是,如果我将 XML 更改为:
<Weasleys>
<Child Name="Ron" Age="11" />
<Child Name="Fred" Age="13" />
<Child Name="George" Age="13" />
</Weasleys>
如何更改我的对象以适应它? (使用当前对象,我得到 3 个 Child
实例,其中 Name
和 Age
为 null
)。
注意对象和 XML 是更大整体的一部分,元素已更改以保护无辜 :)
解决方法
您需要以这种方式将 Name 和 Age 定义为 XML 属性:
public class Child
{
[XmlAttribute(AttributeName = "Name")]
public string Name {get; set;}
[XmlAttribute(AttributeName = "Age")]
public string Age {get; set;}
}
,
排序
将方法更改为接受 XmlNode[] 允许我正确处理它
好有趣!