.net 如何在C#中序列化具有属性而没有子项的项

aor9mmx1  于 2022-11-19  发布在  .NET
关注(0)|答案(1)|浏览(83)

我正在尝试生成下面这个简化的xml片段。

<?xml version="1.0" encoding="utf-16"?>
<group>
  <name attr="yes">My name</name>
</group>

当我序列化下面的代码时,属性转到组,但我希望属性转到名称。

// C# class
[XmlRoot("group", IsNullable = false)]
public class Test1
{

    [XmlAttribute]
    public string attr = "yes";
    [XmlElement("name")]
    public string Name;
}
// Output
<?xml version="1.0" encoding="utf-16"?>
<group attr="yes">
  <name>My name</name>
</group>

如果我把元素名设为类,我就可以在正确的位置得到属性,但是,现在我得到了一个额外的嵌套元素名。

[XmlRoot("group", IsNullable = false)]
public class Test1
{

    [XmlElement("name")]
    public Test2 Name;
}

public class Test2 : Object
{
    [XmlAttribute]
    public string attr = "yes";

    [XmlElement("name")]
    public string Name;
}
// Output
<group>
  <name attr="yes">
    <name>My name</name>
  </name>
</group>

问题是,如何在没有元素的子项的情况下获取元素名称上的属性?

bzzcjhmw

bzzcjhmw1#

您必须使用XmlText而不是XmlElement来标记Test2上的Name属性。

public class Test2
{
    [XmlAttribute]
    public string attr = "yes";

    [XmlText]
    public string Name;
}

相关问题