ホームページ > バックエンド開発 > C++ > C# XML シリアル化で名前空間プレフィックスを制御するにはどうすればよいですか?

C# XML シリアル化で名前空間プレフィックスを制御するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-15 08:35:43
オリジナル
383 人が閲覧しました

How Can I Control Namespace Prefixes in C# XML Serialization?

C# XML シリアル化での名前空間プレフィックスのカスタマイズ

開発者は多くの場合、C# での XML シリアル化中に名前空間の処理を微調整する必要があります。 DataContractSerializerXmlSerializer はどちらも名前空間をサポートしていますが、デフォルトのプレフィックス割り当てが特定のプロジェクトのニーズを常に満たしているとは限りません。

名前空間プレフィックスの指定

XmlSerializerNamespaces クラスは、名前空間プレフィックスを制御するためのソリューションを提供します。 このクラスを使用すると、プレフィックスを名前空間 URI に明示的にマップできます。 これがイラストです:

<code class="language-csharp">[XmlRoot("Node", Namespace = "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e")]
public class MyType
{
    [XmlElement("childNode")]
    public string Value { get; set; }
}

static class Program
{
    static void Main()
    {
        XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
        namespaces.Add("myNamespace", "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e");
        XmlSerializer serializer = new XmlSerializer(typeof(MyType));
        serializer.Serialize(Console.Out, new MyType(), namespaces);
    }
}</code>
ログイン後にコピー

このコードは MyType を定義し、XML 属性を使用してそのルート要素と名前空間を指定します。 XmlSerializerNamespaces インスタンスが作成され、「myNamespace」を「https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e」に関連付けます。 これを Serialize メソッドに渡すと、シリアライザーがカスタム プレフィックスを使用するようになります。

ランタイム名前空間の変更

実行時の名前空間調整のために、XmlAttributeOverrides クラスはクラスのデフォルトの XML 属性をオーバーライドする方法を提供します。 以下は、名前空間の動的な変更を示しています:

<code class="language-csharp">XmlAttributeOverrides overrides = new XmlAttributeOverrides();
overrides.Add(typeof(MyType), "Root", new XmlRootAttribute("Node") { Namespace = "https://www.php.cn/link/7cf68b210274ef46d38b0cd76e059af6" });

XmlSerializer serializer = new XmlSerializer(typeof(MyType), overrides);
serializer.Serialize(Console.Out, new MyType(), namespaces);</code>
ログイン後にコピー

この例では、XmlAttributeOverrides を使用して、実行時に MyType の名前空間をシリアル化前に "https://www.php.cn/link/7cf68b210274ef46d38b0cd76e059af6" に変更します。

以上がC# XML シリアル化で名前空間プレフィックスを制御するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート