問題タブ [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.
c# - .NETからXMLへのシリアル化タイプ
私はこのC#4.0タイプを持っています
XmlSerializer を使用して型をシリアル化したい
理想的には、その値が虚偽の場合、推定属性を省略したいと思います。
この型からこの XML 表現に移行するには、どの属性/実装が必要ですか?
ありがとう。
c# - IXmlSerializable を使用した派生クラスの C# シリアル化
問題をできるだけシンプルにしようと思います。以下は、それを示すための 2 つのサンプル プログラムです。分析する必要がある場合は、それを Visual Studio にコピーして貼り付けるだけです。
私の英語にコメントして修正してください。あなたが私を理解できることを願っています。
私の目標は: BaseClass と DerivedClass の 2 つのクラスがあります。
必要がある:
- DerivedClass のインスタンスを作成する
- BaseClass 型の変数に割り当てます
- その変数を XML ファイルにシリアライズする
- そのファイルを BaseClass 型の変数に逆シリアル化します
- その変数には、タイプ DerivedClass のオブジェクトが含まれている必要があります
最初のサンプル プログラムは、「組み込み」のシリアル化を使用しており、問題なく動作します。
しかし、(IXmlSerializable インターフェイスを使用して) シリアル化プロセスをより詳細に制御し、同じ効果を達成したいと考えています。
最初の例:
- これにより、「ConsoleApplication1.DerivedClass が出力されます。問題ありません。
- これにより、3 つのプロパティすべてを含むファイルが作成されます。これで問題ありません。
- これにより、「ConsoleApplication1.DerivedClass が出力されます。問題ありません。
2 番目の例:
- これにより、「ConsoleApplication1.DerivedClass が出力されます。問題ありません。
- これにより、3 つのプロパティすべてを含むファイルが作成されます。これで問題ありません。
- これにより、「ConsoleApplication1.BaseClass- and IT IS NOT OK 」が出力されます。結果のオブジェクトには、2 つのプロパティのみが含まれます。
主な質問は次のとおり です。その単純なクラスの定義を変更するにはどうすればよいですか?
助けてくれてありがとう。
c# - XMLでカスタムIEnumerableをシリアル化する方法は?
から派生するクラスを作成しましたIEnumerable<T>
。T は でありOQTemplate
、これは IXmlSerializable を正しく実装しています。しかし、次のクラスを実装する方法がわかりません。
次のような XML が必要です。
android - 属性値を取得し、SAX パーサーを使用してこの値を一緒にマップします
ここで、1つの配列リストまたはハッシュマップで解析マップ値を取得したいのですが、どちらが良い方法かわかりません。
ここに私のXMLファイルがあります
このことを解析するためにSAXパーサーを使用しています
ここでタグを貼り付けたいのですがMap
、簡単にはできず、その属性値も取得できませんが、このMap
要素の属性値を例としてMapName
どのように管理できるかを知りたいのですが、属性値paris
のように将来的にそれぞれの値を使用したいと考えていLoadAtStartup
ます。
これらの 3 つのマップ値を管理するにはどうすればよいですか?
ありがとう
サム
wcf - WCFでXmlSerializerを使用してIXmlSerializableタイプをシリアル化する
DataContractSerializerに完全に不満を感じているので、XmlSerializerでIXmlSerializableタイプを使用してWCFで起動して実行しようとしています。
IXmlSerializableとXmlSchemaProviderをクラスに実装して、OperationContract用にシリアル化して[XmlSerializerFormat]を宣言しました。
複雑なスキーマを使用すると、WSDLを表示しようとすると次のエラーが発生します。
スキーマにはさまざまなインクルードがあります(この属性はそのうちの1つで宣言されています)。含まれているスキーマをコード(schema.Includes
)に追加しましたが、役に立ちませんでした。
最も些細なサンプルプロジェクト(1つの要素と2つの属性を持つ単純なスキーマ、単純な対応するクラス、名前を付けます)でも、私はついにこのエラーを乗り越えましたが、すぐに次のことにぶつかります。
残念ながら、有効な型名が何であるかわかりません。それは確かに私のXSD、AFAICSからの要素名ではありません。
何か案は?
編集:
ソースコードの例は、ここからオンラインで表示できます。
c# - IXmlSerializable を実装するには、コレクション プロパティにセッターが必要です
BindingList から継承するカスタム タイプのコレクション プロパティがあります。現在、このプロパティは、Setter がなくても XmlSerializer を介してシリアル化されます。現在、このカスタム コレクション クラスに IXmlSerializable を実装しようとしており、コレクション プロパティに Setter がある場合にのみ、WriteXml() および ReadXml() インターフェイス メソッドが呼び出されることを確認しています。Setter がなくても正しくシリアル化される前に、Setter がない限り、シリアル化がこのプロパティを無視するのはなぜですか。
再現するには:
まず、「Item」というクラスを用意します。
次に、コレクション クラス "MyCollectionType" を作成します (最初のスニペットでは IXmlSerializable が意図的に欠落していることに注意してください)。
最後に、「アイテム」をシリアライズおよびデシリアライズするコードを Main() に追加します。
したがって、そのまま実行すると、Setter なしでシリアル化および逆シリアル化されることがわかります。現在、コレクションは上記のスニペットに「IXmlSerializable」をリストしていませんが、メソッドはそこにあります。したがって、戻って MyCollectionType クラスに "IXmlSerializable" を追加して再度実行すると、コレクション プロパティがシリアル化されておらず、WriteXml() メソッドと ReadXml() メソッドが呼び出されていないことがわかります。また、空の Setter を追加すると、これらのメソッドが突然呼び出されることに注意してください。
c# - XML 子要素のデシリアライズで InvalidOperationException がスローされる
データ オブジェクトの階層を手動で逆シリアル化しようとしています (完全なコードは下にあります) が、理解できない例外が発生します。
DEMDataSet
オブジェクトのコレクションが含まれていDemographicReportGroup
ます。DemographicReportGroup
を実装しIXmlSerializable
、オブジェクトを含みAgency
ます。Agency
object にはリーフ データ項目dAgency.01
、別名が含まれますEMSAgencyUniqueStateID
。
ReadXml
のメソッドの実装DemographicReportGroup
に取り組んでいますが、次のように例外がスローされます。
System.InvalidOperationException: <dAgency.01 xmlns=' http://www.nemsis.org '> は予期されていませんでした。
これまでに見つけたすべてのコード サンプルは、これが機能することを示しています...おそらく、XML 属性の設定ミスでしょうか?
うまくいけば、誰かが助けてくれるでしょう!
また、興味がある場合は:
- なぜあなた
IXmlSerializable
はまったく実装していますか?timeStamp
プロパティは日付/時刻です。プレーンの場合DateTime
、シリアル化されると常に値 (1/1/0001) になります。タイプはDateTime?
、値がないことを知らせてくれますが、属性としてシリアル化することはできません。この例が含まれているデータ標準では、タイム スタンプが属性である必要があります。
- ShouldSerializetimeStampValue の実装についてはどうでしょうか。
- これにより、余分なプロパティとメソッド (timeStampValue と ShouldSerializetimeStampValue) が作成され、1 つのデータ項目に対してコードが多すぎます。また、私が扱っているタイムスタンプはこれだけではありません。
完全なコード (Visual Studio の単体テストとして):
c# - XML 要素をクラス名としてシリアライズする
簡単に言うと、次のような一連のオブジェクトから XML スキーマを作成しようとしています。
しかし、私が得ているのは;
QBXMLMsgsRq は実際にはabstract class
のコレクションです。さまざまなタイプのコレクションに多くのリクエストが存在する可能性があるためです (ここでは InvoiceQueryRq ですが、InvoiceAddRq、InvoiceDeleteRq なども存在する可能性があります)。デフォルトでは、XMLシリアライザーはこれを許可していませんが、少し調査した後、このリンクを見つけました。XML Serialize シリアライズ可能なオブジェクトの汎用リスト
AbstractXmlSerializer
そこを微調整しました
助けてくれる人のための利便性とテストのために、私が扱っているオブジェクトは次のとおりです。