C# XML シリアル化の名前空間コントロール
XML シリアル化では、特定の名前空間の名前空間プレフィックスを指定する必要がある場合があります。 C# では、XmlSerializer と DataContractSerializer の両方が XML シリアル化のオプションを提供しますが、名前空間プレフィックスの制御が困難になる場合があります。
コントロール名前空間プレフィックス
名前空間プレフィックスを制御するために、XmlSerializer と DataContractSerializer の両方で XmlSerializerNamespaces クラスを使用できます。このクラスを使用すると、特定の定義されたプレフィックスを持つ名前空間を追加できます。以下は XmlSerializer を使用した例です:
<code class="language-csharp">[XmlRoot("Node", Namespace="http://flibble")] public class MyType { [XmlElement("childNode")] public string Value { get; set; } } static class Program { static void Main() { XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("myNamespace", "http://flibble"); XmlSerializer xser = new XmlSerializer(typeof(MyType)); xser.Serialize(Console.Out, new MyType(), ns); } }</code>
名前空間の動的更新
実行時に名前空間を変更する必要がある場合は、XmlAttributeOverrides を使用できます。
<code class="language-csharp">XmlAttributeOverrides ovr = new XmlAttributeOverrides(); ovd.Add(typeof(MyType),"Namespace",new XmlAttributeAttribute("http://newnamespace"));</code>
適切なシリアライザーを選択します
どちらのシリアライザーにも長所と短所がありますが、XmlSerializer は名前空間プレフィックスを制御できる機能で知られており、XmlSerializerNamespace を介して特定の名前空間マッピングのインスタンスが事前定義されています。
名前空間プレフィックスを完全に制御する必要があるシナリオでは、XmlSerializerNamespaces とともに XmlSerializer を使用することを検討してください。ただし、名前空間を動的に変更する場合は、XmlAttributeOverrides の使用を検討してください。
以上がC# で XML シリアル化中に名前空間プレフィックスを制御するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。