Gop*_*opi 2 c# xml-serialization xmlserializer
预期的XML输出:
<add>
<doc>
<field name="id">1</field>
<field name="Myname">MyName1</field1>
</doc>
<doc>
<field name="id">2</field>
<field name="Myname">MyName2</field>
</doc>
<doc>
<field name="id">3</field>
<field name="Myname">MyName3</field>
</doc>
</add>
Run Code Online (Sandbox Code Playgroud)
为了获得上述XML文档,我设计了以下类
public class doc
{
[XmlElement("field")]
public ID Id
{
get;
set;
}
[XmlElement("field2")]
public Name Myname
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
名称类将是
public class Name
{
[XmlText]
public string Namevalue
{
get;
set;
}
[XmlAttribute("name")]
public string Myname
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
XmlSerializer代码:
XmlSerializer serializer = new XmlSerializer(typeof(List<doc>), new XmlRootAttribute("add"));
Run Code Online (Sandbox Code Playgroud)
这给了我以下输出
<add>
<doc>
<field name="id">1</field>
<field2 name="Myname">MyName1</field2>
</doc>
<doc>
<field name="id">2</field>
<field2 name="Myname">MyName2</field2>
</doc>
<doc>
<field name="id">3</field>
<field2 name="Myname">MyName3</field2>
</doc>
</add>
Run Code Online (Sandbox Code Playgroud)
这里field2应该是字段我知道我需要将field2更改为doc类中的字段,但这会导致错误.
我应该如何设计我的课程以获得预期的输出?
编辑: ID类也将看起来像具有自己的属性的Name类
两种选择
[XmlRoot("doc")]
public class Doc
{
[XmlElement("field",Order = 1)]
public Field Id
{
get;
set;
}
[XmlElement("field", Order = 2)]
public Field Name
{
get;
set;
}
}
[XmlRoot("doc")]
public class Field
{
[XmlText]
public string Value
{
get;
set;
}
[XmlAttribute("name")]
public string Name
{
get;
set;
}
}
enter code here
Run Code Online (Sandbox Code Playgroud)
这将按给定的顺序产生元素.或者使用类似的数组
[XmlRoot("doc")]
public class Doc
{
[XmlArray("field")]
public Field[] Fields
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3020 次 |
| 最近记录: |