Xml...
最初のステップは、実体化を制御する関連属性と、属性または要素を持つかどうかをクラスにマークアップすることです。要件は基本的に大文字と小文字を変更し、メイン オブジェクトのプロパティを属性として、すべての子Link
オブジェクトのプロパティを要素として持ちます。
[XmlRoot("profileSite")]
public class ProfileSite
{
[XmlAttribute("profileId")]
public int ProfileId { get; set; }
[XmlAttribute("siteId")]
public int SiteId { get; set; }
[XmlArray("links"), XmlArrayItem("link")]
public Link[] Links { get; set; }
}
public class Link
{
[XmlElement("originalUrl")]
public string OriginalUrl{get;set;}
// You other props here much like the above
}
次に、それをシリアル化するために、結果を出力するためにさまざまな場所を取るXmlSerializer.Serialize
多くのオーバーロードがあります。テストには、 を使用できますConsole.Out
。
XmlSerializer serializer = new XmlSerializer(typeof(ProfileSite));
serializer.Serialize(Console.Out, obj);
xmlns
醜い余分な属性を停止する空の名前空間マネージャーを追加することをお勧めします。
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("","");
XmlSerializer serializer = new XmlSerializer(typeof(ProfileSite));
serializer.Serialize(Console.Out, obj,ns);
このサンプル オブジェクトを使用した上記の出力:
var obj = new ProfileSite{
ProfileId=1,
SiteId=2,
Links = new[]{
new Link{OriginalUrl="www.google.com" },
new Link{OriginalUrl="www.foo.com" }
}};
これは:
<?xml version="1.0" encoding="utf-8"?>
<profileSite profileId="1" siteId="2">
<links>
<link>
<originalUrl>www.google.com</originalUrl>
</link>
<link>
<originalUrl>www.foo.com</originalUrl>
</link>
</links>
</profileSite>
最後に、試してみるための実用的な例を次に示します: http://rextester.com/XCJHD55693