2

次のコードを使用して、オブジェクトをXMLにシリアル化します。

using System.IO;
using System.Xml.Serialization;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            MyClass thisClass = new MyClass() { One = "Foo", Two = string.Empty, Three = "Bar" };
            Serialize<MyClass>(thisClass, @"C:\Users\JMK\Desktop\x.xml");
        }

        static void Serialize<T>(T x, string fileName)
        {
            XmlSerializer v = new XmlSerializer(typeof(T));
            TextWriter f = new StreamWriter(fileName);
            v.Serialize(f, x);
            f.Close();
        }
    }

    public class MyClass
    {
        public string One { get; set; }
        public string Two { get; set; }
        public string Three { get; set; }
    }
}

これにより、次のXMLが生成されます。

<?xml version="1.0" encoding="utf-8"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <One>Foo</One>
  <Two />
  <Three>Bar</Three>
</MyClass>

これは、1つのことを除けば、すべてうまくいっています。値の1つがnullの場合、これをXMLから省略できず、そこにある必要があり、として表現することはできません。<Two />代わりに、これをとして表現する必要があり<Two></Two>ます。

これは私の現在の方法を使用して可能ですか?

4

2 に答える 2

2

使用する

[XmlElement(IsNullable = true)]
public string Two { get; set; }

あなたはそれを次のように表すことができます<Two xsi:nil="true" />

于 2012-07-06T12:55:39.287 に答える
0

この記事の人も同じ問題を抱えていると思いますか?多分それはあなたに解決策を提供することができますか?

C#xmlシリアル化

于 2012-07-06T12:40:47.187 に答える