C# 如何将.net类对象中的字段声明为xml子节点以进行序列化

C# 如何将.net类对象中的字段声明为xml子节点以进行序列化,c#,.net,xml,xml-serialization,C#,.net,Xml,Xml Serialization,使用Visual Studio 2010,C#.Net4,我正在构建一个网站,希望通过XML将数据从托管服务器发送到客户端浏览器 我的数据位于对象(类)中,例如: 这将产生以下结果: <myParentNode></myParentNode> <myChildNode ></myChildNode > 假设你的意思是dumdum所说的,你可以通过使用“A”关系实现你想要的目标: public class InitialDataForBrowser

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

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

这将产生以下结果:

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

假设你的意思是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。请记住,您需要实际实例化这些值。你不能序列化你没有的东西。(有空序列化的选项,但我不认为这是您想要的)。

假设您的意思是dumdum所说的,您可以实现您希望我使用的“有”关系:

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。请记住,您需要实际实例化这些值。你不能序列化你没有的东西。(有空序列化的选项,但我认为这不是您想要的)。

您能澄清一点吗:显示的两个xml块之间没有实际区别。。。你想以不同的方式实现什么?另外:对于客户端浏览器来说,json不是更好的选择吗?你的意思是吗?@Ivan我修改了你的问题,以便它反映出你的问题,如果这是错误的,请告诉我。你能澄清一点吗:显示的两个xml块之间没有实际的区别。。。你想以不同的方式实现什么?另外:对于客户端浏览器来说,json不是更好的选择吗?你的意思是吗?@Ivan我修改了你的问题,以便它反映你的问题,如果这是错误的,请告诉我。对不起,是的,我的意思是使用系统;使用System.Collections.Generic;使用System.Linq;使用System.Web;使用System.Xml.Serialization;public class InitialDataForBrowser{public string myField=“myValue”;public ParentNode Parent{get;set;}}}public class ParentNode{public string parentNodeField=“ParentValue”;public ChildNode Child{get;set;}}public class ChildNode{public string childNodeField=“ChildValue”}myValue已将Child标记为[XMLIgnore],这将忽略它。它只看到你的myField属性而不是父属性。等等,我假设你设置了属性。。一秒钟我会编辑。对不起,是的-我的意思是使用系统;使用System.Collections.Generic;使用System.Linq;使用System.Web;使用System.Xml.Serialization;public class InitialDataForBrowser{public string myField=“myValue”;public ParentNode Parent{get;set;}}}public class ParentNode{public string parentNodeField=“ParentValue”;public ChildNode Child{get;set;}}public class ChildNode{public string childNodeField=“ChildValue”}myValue已将Child标记为[XMLIgnore],这将忽略它。它只看到你的myField属性而不是父属性。等等,我假设你设置了属性。。一秒钟后我会编辑。
FileStream fs = new FileStream("XMLFile.xml", FileMode.Create);
XmlSerializer xs = new XmlSerializer(typeof(InitialDataForBrowser));
xs.Serialize(fs, data);
fs.Close();
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";
    }
}