C#クラス構造をXMLにシリアル化し、ネストされたクラスの束を持たずに特定のノード名を提供したいと思います。属性を使用してそれは可能ですか?
たとえば、次のXMLがあるとします。
<OuterItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<InnerItem>
<ItemValue>something i need</ItemValue>
</InnerItem>
</OuterItem>
次のようなXMLシリアル化メソッドがあります。
public static string XmlSerializeToString<T>(T value)
{
if (value == null) { return null; }
XmlSerializer serializer = new XmlSerializer(typeof(T));
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = false;
settings.OmitXmlDeclaration = true;
using (StringWriter textWriter = new StringWriter())
using (XmlWriter xmlWriter = XmlWriter.Create(textWriter, settings))
{
serializer.Serialize(xmlWriter, value);
return textWriter.ToString();
}
}
このようなC#クラス構造が必要ですか?
public class OuterItem
{
public InnerItem InnerItem { get; set; }
}
public class InnerItem
{
public string ItemValue { get; set; }
}
または、次のようなもの(擬似コード)を使用して、XMLドキュメントのどこまでノードを配置する必要があるかを宣言することは可能ですか?
public class OuterItem
{
[XmlNode("InnerItem\ItemValue")]
public string ItemValue { get; set; }
}