でハットXMLデータは簡単、あなたが直接XmlWriter
を使用できることである場合:このプログラムを実行する
class Data {
public DateTime Date { get; set; }
public int Code { get; set; }
public string First { get; set; }
public string Last { get; set; }
}
static void Main() {
var sb = new StringBuilder();
var xws = new XmlWriterSettings();
xws.OmitXmlDeclaration = true;
xws.Indent = false;
var elements = new[] {
new Data { Date = DateTime.Now, First = "Hello", Last = "World", Code = 2}
, new Data { Date = DateTime.UtcNow, First = "Quick", Last = "Brown", Code = 4}
};
using (var xw = XmlWriter.Create(sb, xws)) {
xw.WriteStartElement("root");
foreach (var d in elements) {
xw.WriteStartElement("i");
xw.WriteAttributeString("t", ""+d.Date);
xw.WriteAttributeString("a", "" + d.Code);
xw.WriteElementString("u", d.First);
xw.WriteElementString("s1", d.Last);
xw.WriteEndElement();
}
xw.WriteEndElement();
}
Console.WriteLine(sb.ToString());
}
は、次の出力を生成し(私は明確にするために改行を追加しました。彼らは出力にない)です:あなたが戻って情報を読みたい場合は
<root>
<i t="2/9/2012 3:16:56 PM" a="2"><u>Hello</u><s1>World</s1></i>
<i t="2/9/2012 8:16:56 PM" a="4"><u>Quick</u><s1>Brown</s1></i>
</root>
あなたはそのルート要素が必要です。最も便宜的な方法は、LINQ2XMLを使用します。
var xdoc = XDocument.Load(new StringReader(xml));
var back = xdoc.Element("root").Elements("i").Select(
e => new Data {
Date = DateTime.Parse(e.Attribute("t").Value)
, Code = int.Parse(e.Attribute("a").Value)
, First = e.Element("u").Value
, Last = e.Element("s1").Value
}
).ToList();
XMLは整形式にルート要素が必要です。したがって、ほとんどのツールは1つを生成しません。 –
これらのオブジェクトをどのような目的でシリアライズしていますか?それは私たちがあなたを助けるのに役立ちます。 – Zenexer
使用している.NETのバージョンは何ですか? DataContractSerializerを使用すると、コンパクトなバイナリ形式のXMLにシリアル化できます。 –