xsi や xsd などの過剰な XML 名前空間宣言を生成せずにオブジェクトをシリアル化しようとすると、問題が発生します。デフォルトでは、シリアル化プロセスはこれらの名前空間を結果の XML ドキュメントに挿入します。
問題を示す次のコード スニペットを考えてみましょう:
StringBuilder builder = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter xmlWriter = XmlWriter.Create(builder, settings)) { XmlSerializer s = new XmlSerializer(objectToSerialize.GetType()); s.Serialize(xmlWriter, objectToSerialize); }
結果の XML ドキュメントには名前空間宣言が含まれます:
<message xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns="urn:something"> ... </message>
これらの不必要な名前空間宣言を排除するには、カスタマイズされた名前空間を使用することが不可欠ですオブジェクト:
... XmlSerializer s = new XmlSerializer(objectToSerialize.GetType()); XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("",""); s.Serialize(xmlWriter, objectToSerialize, ns);
XmlSerializerNamespaces クラスを利用し、空の文字列をキーと値として追加することにより、デフォルトの名前空間宣言をオーバーライドして、目的の出力を生成できます:
<message> ... </message>
以上が.NET で XML をシリアル化するときに名前空間宣言をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。