問題タブ [xmlserializer]
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.
c# - 問題 xml-再帰的にネストされたオブジェクトをデシリアライズする
解決済み: 以下のコードでは、思ったほど無限ループが発生しません。ループは、逆シリアル化を呼び出すコードにありました。この投稿されたコードは問題なく動作します
次のオブジェクトを xml にシリアライズおよびデシリアライズしようとしています
MessageObject クラスは次のようになります
したがって、次のような messageobjectcollection のインスタンスがあるとします。
var xml = msgColl.Serialize(); を呼び出すことで、これを問題なくシリアル化できます。
ただし、 var msgColl = new MessageObjectCollection().Deserialize(xml); を呼び出してこれを逆シリアル化しようとすると、
逆シリアル化メソッドでスタック オーバーフロー例外が発生します。
私が間違っていることを知っている人はいますか?
serialization - C# でシリアル化の順序を制御する
XmlSerializer を使用してオブジェクトをシリアル化し、ファイルに書き込みます。要素のネストと、要素と属性としてシリアル化されるものに関して、シリアライザーがやりたいことを実行することで、かなりの成功を収めました。残念ながら、あるクラスのメンバーを別のメンバーの前にシリアライズする必要があるという問題に遭遇しました。他の場所では、最初に宣言されたものが最初にシリアル化されることがうまくいきましたが、この場合、私はそれであまり成功していません。物事がシリアライズされる順序を手動で制御する方法はありますか?
c++-cli - .NET、XmlSerializer InvalidOperationException、XmlSchema定義が原因ですか?
読み込もうとしているXMLファイルと対応するXSDファイルの両方を含むZIPファイルをhttp://www.bonnland.de/FIBEX.zipにアップロードしました。
XmlSerializerを使用して次のXML(フラグメント)を逆シリアル化しようとしています。そうしていると、エラーが発生します:(ドイツ語であるため申し訳ありませんが、イタリック体で大まかな翻訳を行います)
これは次のように解釈されます。
ソースドキュメントは次のとおりです。
ルート要素は次のとおりです。
このフラグメントのクラス定義は次のとおりです。
私はグーグルやここで解決策を見つけられなかったので、(もう一度)誰かが私を助けてくれることを願っています。
c# - C# Xml シリアライズ リストXml 属性を持つ子孫
お前らおはよう、
List から派生し、パブリック プロパティを持つコレクションがあります。Xml シリアライザーがプロパティを取得しません。リスト項目は正常にシリアル化されます。XmlAttribute 属性を試してみましたが、役に立ちませんでした。解決策はありますか?
次のxmlを取得しています
これを手に入れたい
c# - XmlSerializer.Deserialize - 不要な要素を無視しますか?
xsd.exe を使用するためのクラスを生成した XSD スキーマがありXmlSerializer.Deserialize
、XSD スキーマに準拠するはずの XML ファイルからそのクラスのインスタンスを作成するために使用しようとしています。残念ながら、XML ファイルには、スキーマが想定していない余分な要素が含まれているため、System.InvalidOperationException
から がスローされDeserialize
ます。
スキーマに要素を追加しようとしまし<xs:any>
たが、違いはないようです。
XmlSerializer.Deserialize
私の質問は、これらの余分な要素を無視する方法はありますか?
c# - .NET で利用可能な XML シリアル化オプションの決定が難しい
昨夜まで、私は .NET のさまざまなライブラリを使用して XML を解析してきましXmlDocument
たXDocument
。なぜこれをもっと早く調べなかったのかはわかりませんが、クラスのシリアル化/逆シリアル化を無料で提供する何かが .NET で利用可能であるに違いないと思いました。もちろん、それはXmlSerializer
クラスの形式で提供されます。 .
案の定、数行のコードを使用することで、シリアライズとデシリアライズを簡単に行うことができました (ただし、現在書いているコードでは、デシリアライズするだけで済みます)。他のライブラリと必要な単体テストでこれを行う独自のクラスを作成します。しかし問題は、自分のプロパティを読み取り専用にしたいということです。セッターをプライベートにすると、XmlSerializer の作成時に次のエラーが発生します。
一時クラスを生成できません (結果 = 1)。エラー CS0200: プロパティまたはインデクサー 'MyProperty' を割り当てることができません -- 読み取り専用です
これは解決されない問題のように見えるため、回避策が必要です。
案の定、私はこの情報を見つけました。これは、自動プロパティを放棄してプライベート フィールドに戻るだけで、コードをコンパイルできることを示しています。残念ながら、これはコンパイルされますが、コードを実行すると、実際にはデータが逆シリアル化されません。アプリケーションを停止した後、メッセージ ウィンドウに次のようなエントリがいくつかあることに気付きました。
要素 'MyProperty' のスキーマ情報が見つかりませんでした。
これは、XmlSerializer がプライベート フィールドの処理方法を認識していないため、MyProperty に値を割り当てるコードがないためです!!!
StackOverflow で別の解決策DataContractSerializer
を提示する回答を見つけました。これは、これまで聞いたことのないa を使用することです。クラスに必要なコード変更を加えましたが、上記と同じメッセージが表示されました。念のためにコードを実行しましたが、XML が逆シリアル化されるときにクラス メンバーが設定されません。
私の特定のケースでは、それを吸ってメンバーが上書きされる(悪い)ことを許可するか、シリアライゼーション/デシリアライゼーションコードをすべて記述するという元のやり方に戻ると考えています自分。ここで私が間違っていることはありますか、それとも XmlSerializer のようなクラスが逆シリアル化中にクラスのプライベートメンバーを設定できるようにすることは不可能ですが、クラスの消費者はそのメンバーを上書きできませんか?
更新:プライベート プロパティの逆シリアル化を行う別の方法を示すさらに別の記事ですが、試してみたところ、動作しません。
以下は、逆シリアル化を試みたクラスの例です。
結果: XmlSerializer で逆シリアル化するとエラーは発生しませんが、XML ファイルの Port 値が 1 の場合、_port と Port の値は 0 になります<Port>1</Port>
。
もう一つの例:
結果: 正常にデシリアライズされますが、パブリック セッターは必要ありません。
次のようにクラスを逆シリアル化します。
c# - XmlSerializerは、スペースを0x0020(16進値)に置き換えます
何らかの理由で、スペースを含むXmlElementsは、スペースの代わりに_x0020で出力されます。
例えば、
<The_0x0020_Total>
印刷するとになります。TextWriterを使用して出力し、XmlSerializer.Serializeを使用してファイルに印刷していますが、機能しません。
c# - 名前空間でシリアライズしたい
以下の構造体をxmlでC#でシリアライズしたいです。
...またはそのようなもの。名前空間と属性のシリアル化に興味があります:P
等
ありがとう
c# - XmlSerializer の特殊文字
現在、次のコードがあります。
そして、現在シリアライザーがユーロ記号を与えると ? を返すという問題があるので、€ を渡そうとしましたが、& をエンコードして € を返します。この問題を解決するエレガントな方法を知っている人はいますか?
どうもありがとう、
クリス
.net - 内部 XML ノードからの XML デシリアライズ
.NET オブジェクトをシリアル化/逆シリアル化する作業を行っています。XML ファイルの要件として、オブジェクトは という名前のマスター ノード内にある必要がありますmycompany
。ファイルの例を次に示します。
これを逆シリアル化する際に問題が発生しています。mycompany
シリアライザーに「デシリアライズする前にノードを掘り下げてください」と伝える方法がわかりません。
これが私の現在のデシリアライゼーションコードです(ルートノードを考慮していません):
次のコードを実行しようとしました: を作成XmlTextStream
し、ファイル ヘッダー ノードとノードを読み取りmycompany
、ストリームをシリアライザーに渡します。
上記は機能しませんXmlElement error: Root element is missing
。
簡単な解決策があることは知っていますが、見つけることができません。