1

使用 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();
4

1 回答 1

1

假设您的意思是 dumdum 所说的,您可以使用“Has 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 序列化的选项,但我认为这不是你想要的)。

于 2013-01-14T15:27:06.967 回答