問題タブ [xml-serialization]
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 - リスト プロパティのコンテンツが xml シリアル化されているが、プロパティ自体はマークアップで表現されないように指定するにはどうすればよいですか?
私はこのようなクラスを持っています:
私の望ましい出力はこれです:
python - memcached のオブジェクトに最適なシリアル化方法は何ですか?
私の Python アプリケーションは現在、python-memcached APIを使用して memcached 内のオブジェクトを設定および取得しています。この API は、Python のネイティブpickle モジュールを使用して、Python オブジェクトをシリアライズおよびデシリアライズします。
この API を使用すると、ネストされた Python リスト、辞書、およびタプルを memcached に簡単かつ迅速に格納できます。これらのオブジェクトをアプリケーションに読み込むことは完全に透過的であり、機能します。
しかし、私は Python だけを使用することに限定したくありません。また、すべての memcached オブジェクトが pickle でシリアル化されている場合、他の言語で記述されたクライアントは機能しません。
私が検討したクロスプラットフォームのシリアル化オプションは次のとおりです。
- XML - 主な利点は人間が判読できることですが、このアプリケーションではそれは重要ではありません。XML も多くのスペースを必要とし、解析にはコストがかかります。
- JSON - 優れたクロスプラットフォームの標準のように思えますが、memcached から読み戻されたときにオブジェクト タイプの特性が維持されるかどうかはわかりません。たとえば、この投稿によると、タプルはsimplejsonを使用するとリストに変換されます。また、JSON 構造に要素を追加すると、古い構造に記述されたコードが壊れる可能性があるようです
- Google Protocol Buffers - 非常に高速でコンパクトに見えるため、これに非常に興味があります。少なくとも XML よりも 10 倍小さく高速です。人間が読める形式ではありませんが、このアプリにとっては重要ではありません。古いコードを壊さずに構造の成長をサポートするように設計されているようです
このアプリの優先順位を考えると、memcached の理想的なオブジェクトのシリアル化方法は何ですか?
- クロスプラットフォームのサポート (Python、Java、C#、C++、Ruby、Perl)
- ネストされたデータ構造の処理
- 高速シリアライゼーション/デシリアライゼーション
- 最小メモリフットプリント
- 古いコードを壊さずに構造を変更できる柔軟性
c# - XmlSerializer と装飾されたクラス (C#)
XmlSerializer を利用して、XML との間で変換を行います。クラスの例を次に示します。
XML は次のようになります。
このクラスに属性を追加できるようにしたいです。たとえば、要素に変更追跡を追加する必要がある場合があります。「IdRef」などの属性が myClass 要素に追加されます。
IdRef 属性をメインの POCO クラスから除外したいと考えています。また、上記のようなクラスがたくさんあるので、拡張属性を追加して、それぞれにサブクラスを作成する必要がないように願っています。IXmlSerializer インターフェイスを使用してカスタム実装を作成する可能性はありますか?
更新 以下に説明する簡単な解決策を使用します。この実装を「考えすぎ」て、必要のないところに複雑さを加えようとしていたと思います。
.net - enum 値を int としてシリアル化するにはどうすればよいですか?
enum-value を int としてシリアライズしたいのですが、名前しか取得できません。
これが私の(サンプル)クラスと列挙型です:
そしてコード(私が間違っていないことを確認するため)
この回答(別の質問に対する) は、列挙型がデフォルトで int にシリアル化されるべきであることを示しているようですが、そうではないようです。ここに私の出力があります:
すべての値に「[XmlEnum("X")]」属性を付けることで値としてシリアル化できましたが、これは間違っているようです。
.net - XmlSerialization と属性 - プロパティがシリアル化されないようにする
.NET で XmlSerialization を取得して、シリアル化中に特定のプロパティを無視する方法はありますか?
たとえば、IsValid という public bool プロパティと、シリアル化したくないオブジェクトの唯一のプロパティがあります。どうすればこれを行うことができますか?
c# - XMLファイルを逆シリアル化する最も効率的な方法は何ですか?
アロハ、
逆シリアル化したい 8MB の XML ファイルがあります。私はこのコードを使用しています:
このコードは約 1 分で実行されますが、これはかなり遅いように思えます。sgen.exe を使用してシリアル化 dll をプリコンパイルしようとしましたが、パフォーマンスは変わりませんでした。
パフォーマンスを向上させるには、他にどのようなオプションがありますか?
[編集] (基本的な) 変換を実行するには、逆シリアル化によって作成されたオブジェクトが必要です。XML は外部 Web サービスから受信されます。
java - JAXB でのカスタムのシリアル化
.NET で IXmlSerializable を使用して可能なのと同じ方法で、JAXB で XML シリアル化をカスタマイズする方法はありますか? (つまり、XmlReader/Writer に相当するものを使用して、オブジェクトのシリアル化を直接制御する機能)。
私は XmlAdapter と @XmlJavaTypeAdapter を見てきましたが、それらは型をシリアライズ可能なフォームとの間で変換するために使用されているように見えますが、これは私が望むものではありません。
更新:特に、内部 XML を逆シリアル化する方法をプログラムで正確に決定するルート オブジェクトの逆シリアル化をカスタマイズしたいと思います (たとえば、既知の型の特定のセットで jaxb unmarshaller を作成します)。
更新: この問題を解決する方法を見つけましたが、これは非常に厄介なハックであるため、おそらく他の投稿者によって提案された解決策の 1 つを使用します。
.net - x86 ターゲット モードでの XML シリアル化アセンブリの生成
通常、.Net コードのシリアル化アセンブリを生成するボックスにチェックを入れるのに問題はありません。
ただし、x64 アーキテクチャで実行する際の問題を修正するために、プラットフォーム ターゲットを「任意の CPU」ではなく「x86」に変更しました。
ここで、Trigger.XMLSerialization.dll が Trigger.dll [version=0.0.0.0 culture=neutral] を参照しているというエラーが表示されます。
これに対する既知の修正はありますか?
c# - 逆シリアル化エラー: 名前空間 '' の XML 要素 'name' は、現在のスコープに既に存在します
XMLシリアライゼーションを使用するのはこれが初めてで、2日間トラブルシューティングを試みた後、これは私を完全に狂わせています。
逆シリアル化が開始されると、次のエラーが発生します。
私のコードのこの行でエラーが発生します:
理由はわかりません。複製された「名前」ノードがないため、取得できません。これは、サード パーティの REST API の HttpWebResponse から受け取った XML ドキュメントです。
完全なコードは次のとおりです。
私のアルバムクラス(私がデシリアライズしているタイプ):
私のシリアライザクラス:
私が逆シリアル化しようとしている XML (VS でデバッグするときに CreateAlbumFromXMLDoc メソッドに渡される Xml Doc オブジェクトからコピーされます):
補足:念のため、その XML を XML Notepad 2007 に貼り付けると、次のように表示されます。
XML ドキュメントに xml-stylesheet 処理命令が含まれていません。XSLT 変換を提供するには、ファイルの先頭に次を追加し、それに応じて href 属性を編集します。
それは、それが不正な形式であることを意味するのではなく、注意すべきことだと思います。
そう..
私の最終的な目標は、このいまいましいエラーを明らかにパスし、エラーを乗り越えることができたら、上記のコードを使用してアルバムの配列を取得することです。また、Album クラスの Album[] プロパティ、またはここで不足している可能性のあるものを使用して、アルバムの配列を取得しようとする際に、コードが正しいことを確認したいと思います。私はそれがかなり近いと思うし、うまくいくはずですが、そうではありません。
ファローアップ。それ以来ずっと髪を伸ばしています。
これが最新です。Enum などの (Marc からの) 今のところ使用していないものもあります。後で変更する可能性があります。奇妙に見えたので、日時のものも引き出しましたが、それなしではエラーは発生しませんでした...少なくともまだ。現在の主な問題は、いまいましい XML です。
私が推測するフォーマットにまだ問題があるように見えますか?別の問題を隠蔽しない限り、手がかりはありません。これは私を夢中にさせています。
逆シリアル化が開始されると、次のエラーが発生します。
コードの次の行でエラーが発生します: GetAlbumsResponse album = (GetAlbumsResponse)serializer.Deserialize(reader);
XmL doc への応答を取得する方法:
マイ アルバム クラスとルート レベル クラス(Marc のおかげで..今すぐ取得できます):
私のシリアライザクラス:
私がデシリアライズしようとしている真のXML着信(はい、xmlnsがあります):
c# - 逆シリアル化中のエラー:「文字列は有効な DateTime として認識されませんでした」とはどういう意味ですか?
そして、属性で DataType を取得しようとすると、次のようになります: {"文字列 '1233469624' は有効な AllXsd 値ではありません。"}
ノード値の 1 つの例を次に示します。
これを正常に逆シリアル化するために、ここで DateTime プロパティを設定する方法がわかりません。