2011-11-26 64 views
2

我想从类中构建以下XML节点。从类中生成XML

<Foo id="bar">some value</Foo> 

我的班级定义应该如何?

class Foo 
{ 
    public string Value {set;get;} 
    public string id{set;get;} 
} 

我相信我应该把这些属性的一些XML属性,但不知道它们是什么。

回答

9

查看System.Xml.Serialization命名空间下的属性。在你的情况下,这个类应该看起来像下面的代码。

public class StackOverflow_8281703 
{ 
    [XmlType(Namespace = "")] 
    public class Foo 
    { 
     [XmlText] 
     public string Value { set; get; } 
     [XmlAttribute] 
     public string id { set; get; } 
    } 
    public static void Test() 
    { 
     MemoryStream ms = new MemoryStream(); 
     XmlSerializer xs = new XmlSerializer(typeof(Foo)); 
     Foo foo = new Foo { id = "bar", Value = "some value" }; 
     xs.Serialize(ms, foo); 
     Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray())); 
    } 
} 

更新:添加了代码序列的类型。

+0

好吧,我怎么可以在分配值后从这个类生成XML? – DarthVader

+1

用例子编辑答案。你将使用'XmlSerializer'类。 – carlosfigueira

+0

谢谢。这是一种生成XML的有效方法吗?我应该研究哪些更好/更快的方法? – DarthVader

2

对于C#和Visual Basic,没有理由手动执行此操作。 Visual Studio包含一个命令行工具,可为您生成类或xml架构。详情请参阅http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=VS.100).aspx

+0

真的吗?因为我推荐使用存在的工具,而不是手动使用该工具,所以不投票? –

+0

我同意 - 为什么不投票呢?甚至更多,为什么投票没有解释。这没有帮助或礼貌。如果你正在使用一个定义良好的模式(如果你不是,那么为什么不 - 它们非常有用,除非是非常简单的情况),那么这是一个很好的工具。它让你在一个地方更新模式并重新生成代码 - 比手动更新代码和模式要好得多。 –

+0

这个工具真的很棒。我也不明白为什么downvoting,所以我给你一个upvote :) – dasheddot