「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > .NET XMLシリアル化で名前空間プレフィックスを制御する方法は?

.NET XMLシリアル化で名前空間プレフィックスを制御する方法は?

2025-04-16に投稿されました
ブラウズ:490

How to Control Namespace Prefixes in .NET XML Serialization?

。ネットXMLシリアル化:名前空間プレフィックスコントロール

。ネットは、2つの主要なXMLシリアル化メカニズムを提供します。ただし、デフォルトで生成する名前空間プレフィックスは、カスタムプレフィックスの必要性を制限する内部メカニズムによって管理されます。 xmlserializernamespaces

を使用します

名前空間エイリアスを制御する必要がある場合、 xmlserializernamespaces クラスが理想的です。シリアル化されたXMLの特定の名前空間のエイリアスを明示的に指定できます。

次のコードの例は、 xmlserializernamespaces

を使用して名前空間エイリアスを制御する方法を示しています。

[xmlroot( "node"、namespace = "http:// flibble")]] パブリッククラスmyType { [xmlelement( "Childnode")] public string value {get;セット; } } 静的クラスプログラム { 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); } }

[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);
    }
}

ここに何か

something in here
ランタイムは名前空間を動的に変更し、

xmlattributeOverrides クラスを使用できます。特定のタイプのプロパティのデフォルトの名前空間設定をオーバーライドできます。

たとえば、次のコードは、

xmlattributeOverrides を使用して名前空間を変更する方法を示しています。

xmlattributeOverrides ovrd = new xmlattributeOverrides(); ovrd.add(typeof(mytype)、 "Childnode"、new XmlattributeOverrides() { {typeof(xmlelementAttribute)、new XmleLementAttribute( "ChildNode"、 "http:// alternateNamespace")} }); XMLSERIALIZER XSER = new XmlSerializer(Typeof(myType)、ovrd); xser.serialize(console.out、new mytype());

このコードは、
XmlAttributeOverrides ovrd = new XmlAttributeOverrides();
ovrd.Add(typeof(MyType), "childNode", new XmlAttributeOverrides()
{
    { typeof(XmlElementAttribute), new XmlElementAttribute("childNode", "http://alternateNamespace") }
});

XmlSerializer xser = new XmlSerializer(typeof(MyType), ovrd);
xser.Serialize(Console.Out, new MyType());
」を指します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3