如何将.net类对象中的字段声明为用于序列化的xml子节点

时间:2013-01-14 15:07:09

标签: c# .net xml xml-serialization

使用Visual Studio 2010,C#.Net4,我正在建立一个网站,我想通过XML将数据从托管服务器发送到客户端浏览器。

我的数据位于对象(类)中,例如:

using System.Xml.Serialization;

public class InitialDataForBrowser
{
    public string myParentNode;
    public string myChildNode;


    public InitialDataForBrowser()
    {

    }

    [XmlIgnore]
    public string _myChildNode
    {
        set
        {
            myChildNode = value;
        }
    }
}

这将产生结果:

<myParentNode></myParentNode>
<myChildNode ></myChildNode >

如何在对象中声明子节点元素,从而生成:

<myParentNode>
    <myChildNode ></myChildNode >
</myParentNode>

我使用以下命令将上述对象写入XML文件:

FileStream fs = new FileStream("XMLFile.xml", FileMode.Create);
XmlSerializer xs = new XmlSerializer(typeof(InitialDataForBrowser));
xs.Serialize(fs, data);
fs.Close();

1 个答案:

答案 0 :(得分:1)

假设你的意思是dumdum说你可以实现你寻找我使用“有A”关系的东西:

public class InitialDataForBrowser
{
    public ParentNode Parent { get; set; }
    public string MyName { get; set; }

    public InitialDataForBrowser()
    {
        Parent = new ParentNode();
        MyName = "InitialDataForBrowser";
    }
}

public class ParentNode
{
    public ChildNode Child { get; set; }

    public string MyName { get; set; }

    public ParentNode()
    {
        Child = new ChildNode();
        MyName = "Parent";
    }
}

public class ChildNode
{
    public string MyName { get; set; }

    public ChildNode()
    {
        MyName = "Child";
    }
}

如果您序列化InitialDataForBrowser,您将获得所需的xml。请记住,您需要实际实例化值。你无法序列化你没有的东西。 (Null序列化有一些选项,但我认为这不是你想要的)。