2

私は次のクラスを持っています。(SIMモデル、製品、アイテム)

public class SIMModel
{
    public Product Product { get; set; }
}

public class Product
{
    public List<Item> Items { get; set; }
}

public class Item
{
    [XmlAttribute("ID")]
    public String ID { get; set; }
    [XmlAttribute("Name")]
    public String Name { get; set; }

    public Child_Item Child_Item { get; set; }
    public Parent_Item Parent_Item { get; set; }
}

public class Child_Item
{
    [XmlAttribute("ID")]
    public String ID { get; set; }
}

そして、私はこのXMLを作りたいです

 <SIMModel>
  <Product>
   <Item ID="N" Name="N-1">
    <Child_Item ID="N-1-1">
   </Item>
  </Proudct>
 </SIMModel>

上位クラスを使用してシミュレーション XML を作成するにはどうすればよいですか? 各クラスをラップする方法がわかりません..

4

1 に答える 1

1

文字列にシリアル化して名前空間を削除する単純な Serialize メソッドを作成しました。

private static void Main(string[] args)
{
    string result = Serialize(new SIMModel
    {
        Product = new Product
        {
            Items = new List<Item>
            {
                new Item
                {
                    ID = "N",
                    Name = "N-1",
                    Child_Item = new Child_Item {ID = "N-1-1"}
                }
            }
        }
    });
    Console.WriteLine(result);
}

public static string Serialize<T>(T value)
{
    if (value == null)
    {
        return null;
    }
    //Create our own namespaces for the output
    XmlSerializerNamespaces ns = new XmlSerializerNamespaces();

    //Add an empty namespace and empty value
    ns.Add("", "");

    XmlSerializer serializer = new XmlSerializer(typeof (T));

    XmlWriterSettings settings = new XmlWriterSettings
    {
        Encoding = new UnicodeEncoding(false, false),
        Indent = true,
        OmitXmlDeclaration = true
    };

    using (StringWriter textWriter = new StringWriter())
    {
        using (XmlWriter xmlWriter = XmlWriter.Create(textWriter, settings))
        {
            serializer.Serialize(xmlWriter, value, ns);
        }
        return textWriter.ToString();
    }
}

出力:

<SIMModel>
  <Product>
    <Items>
      <Item ID="N" Name="N-1">
        <Child_Item ID="N-1-1" />
      </Item>
    </Items>
  </Product>
</SIMModel>
于 2013-03-05T12:15:41.533 に答える