問題タブ [ixmlserializable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 「ReadElementContentAsBase64 メソッドは、この XmlReader ではサポートされていません」
次のメッセージReadElementContentAsBase64
がスローされます。NotSupportedException
ReadElementContentAsBase64 メソッドは、この XmlReader ではサポートされていません。CanReadBinaryContent プロパティを使用して、リーダーがそれを実装しているかどうかを調べます。
(確認したところ、CanReadBinaryContent は true を返します)
Microsoft .NET 3.5 フレームワークの実装を使用しています。
何が原因でしょうか?
注: 意図的に DataContractSerializer と IXmlSerializable を混在させています。DataContractSerializer のより一般的なアプローチは、クラスを [DataContract] にすることです。
編集:私は現在、回避策を使用しています:
Convert.FromBase64String(reader.ReadElementContentAsString())
それでも、なぜ通常の方法が失敗するのだろうか.
c# - パブリック API にはどの XML シリアル化メソッドを使用すればよいですか?
抽象クラスから継承するクラスで構成されたツリー構造を構築するプログラムを作成していますNode
。私のプログラムには、さまざまなタイプのノードが組み込まれています。ただし、より上級のユーザーが私のライブラリを参照して、独自の派生物を作成できるようにしたいと考えていますNode
。これらのプラグイン ライブラリは、アプリの起動時に読み込まれますAssembly.Load()
。したがってNode
、アプリケーションで使用されるすべての潜在的な型は、実行時までわかりません。
さらに、これらのツリーを XML ファイルとの間でシリアライズおよびデシリアライズできるようにしたいと考えています。XMLSerializer、DataContractSerializer、および IXmlSerializable の実装について、ある程度の経験があります。通常、私は DataContractSerializer を使用します。これは、通常、IXmlSerializable を実装するよりも少ないコードで済み、XmlSerializer ではできないプライベート フィールドをシリアル化できるためです。
しかし、このプロジェクトでは、他のユーザーが私のクラスから派生したクラスを作成し、それらをシリアル化するために必要なコードや属性を追加する必要があることも考慮する必要があります。
これを考慮すると、あるシリアル化メカニズムを別のメカニズムよりも優先する必要がある理由はありますか?
vb.net - xml-serializationからオブジェクトタイプを識別する動的XmlSerializer?
シリアル化されたデータとともにデータ型を格納するXmlSerializerを作成する方法はありますか?その後、逆シリアル化すると、シリアル化されたオブジェクトのタイプが自動的に識別され、そのタイプのオブジェクトが作成されます(オブジェクトとして返されます)。
XDocument、XMLリテラルを含むアイデアも歓迎されます。
.net - WCF XmlSchema での継承の指定
WCF サービスを介して送信するデータ型に IXmlSerializable を実装する必要がある状況に直面しています。しかし、xsd で基本クラスをマークしようとすると、サービス参照を更新できなくなり、xsd に書いている型が「見つかりません」と表示されます。xsd は次のとおりです。
C# は次のとおりです。
どうにかして BaseType をインポートする必要があると思いますか?
編集:私は試しました
スキーマを 1 つ追加しますが (予想どおり)、何も変わりません!
asp.net - この XML に IXmlSerializable を実装するのを手伝ってください
XML は次のとおりです。
私はDTOを次のように持っています:
c# - Xmlシリアル化動的無視
特定の形式でxmlドキュメントを生成しようとしています。プロパティの値に応じて、プロパティのシリアル化をスキップしたいと思います。
Setがfalseの場合、プロパティ全体をシリアル化しないようにします。結果のxmlは次のようになります。
それ以外の
IXmlSerializableまたは他の何かでこれをきれいに行うことができる方法はありますか?
ありがとう!
c# - XMLDeserialize、「タイプを反映するエラーがありました」
重複の可能性:
XmlSerializer-タイプを反映するエラーがありました
タイプ「MyNameSpace.configType」を反映するエラーがありました。
configType
問題を見つけることを期待して、もう少し詳しく説明します。表面上冗長な属性を削除する以外に、xsd.exeから生成した後に行った唯一の変更は、生成されたクラスの1つを自分のものに置き換えることでした。これにより、オプションの要素のシリアル化をより適切に実装できます。
そのinnerExceptionを調べるためのヒントをありがとう、それは私がIXmlSerializableを実装するようにしたクラスにさかのぼります。これは現在、独自のファイルにあり、以下に示されています。
jdehaanは素晴らしい記事を書きました。IXmlSerializableを実装する適切な方法は?。彼のコードプロジェクトを読んだ後、xsd.exeがプロトクラス用に生成したものが、実装するために拡張したクラスを壊していることがわかりましたIXMLSerializable
。
具体的には、属性[XmlType(Namespace = "MyNameSpace")]により、「プロパティの反映」というエラーが発生します。それを削除すると、もう少し進んで、含まれているクラスは他のすべての逆シリアル化を渡しますが、上記のクラスを表すメンバーに関しては「無効なXMLタグ」と叫びます。
c# - オブジェクトをシリアル化して、IXmlSerializableを実装する別のオブジェクトに格納します
オブジェクトExceptionのインスタンスをXMLシリアル化し、別のオブジェクトExceptionReportのXMLNode[]Nodesプロパティに格納したいと思います。
結果が次のようになるように、これをどのように実行しますか?
これまでのところ、次のものがありますが、これらのオブジェクトをシリアル化してExceptionReportNodes配列に格納する方法を知る必要があります。
c# - IXmlSerializable を使用した名前空間プレフィックス
使用する適切なデコレータ、または必要な設計について少し混乱しています。IXmlSerializable を実装しているクラスをシリアル化するときに、名前空間とそのプレフィックスを XmlRoot 要素に含める方法はありますか?
たとえば、クラス定義。
次の方法でシリアル化する場合:
出力は
私が期待していた出力は次のとおりです。
2 番目は、クラスの IXmlSerializable の実装が削除され、XmlElement デコレータのコメントを解除した場合の XmlSerializer の出力です。返された両方の Xml ドキュメントが有効であることはわかっていますが、冗長な名前空間宣言を削除してみてください。IXmlSerializable は、クラスのシリアル化/逆シリアル化をより詳細に制御することを目的としているため、そのようなことが可能であると思います。
更新:非常に興味深い回答で、XmlWriterSettings の変更が提案されました! NamespaceHandling プロパティを変更することで、すべてが解決されるように見えました。ただし、これでもメンバーごとに名前空間が書き換えられます。以下の完全なシリアル化コード:
c# - XmlSerializer は null ファイルを保存します
オブジェクトのシリアル化に問題があります。IXmlSerializable インターフェイスを実装し、XmlSerializer (シリアライザーなど) のオブジェクトを初期化します。しかし、時々 serializer.Serialize(writer, data) を呼び出した後、私の出力ファイルは次のようになります:
なぜ私はそのような行動をするのですか?