XML 参数?

问题描述

我在将 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 实例,其中 NameAgenull)。

注意对象和 XML 是更大整体的一部分,元素已更改以保护无辜 :)

解决方法

您需要以这种方式将 Name 和 Age 定义为 XML 属性:

public class Child
{
  [XmlAttribute(AttributeName = "Name")]
  public string Name {get; set;}
  [XmlAttribute(AttributeName = "Age")]
  public string Age {get; set;}
}
,

排序
将方法更改为接受 XmlNode[] 允许我正确处理它

好有趣!