C# 如何将.net类对象中的字段声明为xml子节点以进行序列化
使用Visual Studio 2010,C#.Net4,我正在构建一个网站,希望通过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
<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";
}
}