我想從類中構建以下XML節點。從類中生成XML
<Foo id="bar">some value</Foo>
我的班級定義應該如何?
class Foo
{
public string Value {set;get;}
public string id{set;get;}
}
我相信我應該把這些屬性的一些XML屬性,但不知道它們是什麼。
我想從類中構建以下XML節點。從類中生成XML
<Foo id="bar">some value</Foo>
我的班級定義應該如何?
class Foo
{
public string Value {set;get;}
public string id{set;get;}
}
我相信我應該把這些屬性的一些XML屬性,但不知道它們是什麼。
查看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()));
}
}
更新:添加了代碼序列的類型。
對於C#和Visual Basic,沒有理由手動執行此操作。 Visual Studio包含一個命令行工具,可爲您生成類或xml架構。詳情請參閱http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=VS.100).aspx。
真的嗎?因爲我推薦使用存在的工具,而不是手動使用該工具,所以不投票? –
我同意 - 爲什麼不投票呢?甚至更多,爲什麼投票沒有解釋。這沒有幫助或禮貌。如果你正在使用一個定義良好的模式(如果你不是,那麼爲什麼不 - 它們非常有用,除非是非常簡單的情況),那麼這是一個很好的工具。它讓你在一個地方更新模式並重新生成代碼 - 比手動更新代碼和模式要好得多。 –
這個工具真的很棒。我也不明白爲什麼downvoting,所以我給你一個upvote :) – dasheddot
好吧,我怎麼可以在分配值後從這個類生成XML? – DarthVader
用例子編輯答案。你將使用'XmlSerializer'類。 – carlosfigueira
謝謝。這是一種生成XML的有效方法嗎?我應該研究哪些更好/更快的方法? – DarthVader