ホームページ > バックエンド開発 > C++ > .NET で XML シリアル化されたオブジェクトから名前空間属性を削除するにはどうすればよいですか?

.NET で XML シリアル化されたオブジェクトから名前空間属性を削除するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-02 18:39:39
オリジナル
570 人が閲覧しました

How to Eliminate Namespace Attributes from XML Serialized Objects in .NET?

.NET でのオブジェクトのシリアル化中の名前空間属性の削除

.NET でオブジェクトを XML にシリアル化するときに、望ましくない名前空間が発生することがよくあります結果として得られるドキュメント内の属性 (「xmlns:xsi」など) 「xmlns:xsd」これらの属性は出力を乱雑にし、その後の処理を妨げる可能性があります。

これらの名前空間を削除する 1 つの方法は、XmlWriterSettings.OmitXmlDeclaration プロパティを true に指定することです。ただし、このメソッドだけでは XML 宣言行が抑制され、名前空間属性は抑制されないため、十分ではない可能性があります。

この問題に対処し、xsi および xsd 名前空間を明示的に削除するには、XmlSerializerNamespaces クラスを利用できます。このクラスを使用すると、カスタム名前空間マッピングを指定できます。この例では、XmlSerializerNamespaces のインスタンスを作成し、空の文字列をキーと値の両方として追加して、以前に定義された名前空間を効果的にオーバーライドできます。

コード例:

...
XmlSerializer s = new XmlSerializer(objectToSerialize.GetType());
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
s.Serialize(xmlWriter, objectToSerialize, ns);
ログイン後にコピー

XmlSerializerNamespaces のキーと値の両方に空の文字列を指定することで、すべての名前空間宣言を削除しますシリアル化された XML ドキュメントからの変換により、目的のメッセージ タグのみを含むクリーンな出力が得られます:

<message>
...
</message>
ログイン後にコピー

以上が.NET で XML シリアル化されたオブジェクトから名前空間属性を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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