問題タブ [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.
.net - XmlSerializer プロパティの逆シリアル化の順序
XmlSerializer が特定のオブジェクトのプロパティを逆シリアル化する順序を決定する方法を誰かが知っているかどうか疑問に思っています。
追加情報:
私はこのようなクラスを持っています:
Gaps セッターと HasGaps セッターの両方にブレークポイントを設定すると、最初にギャップがデシリアライズされます。
より詳しい情報
XML は次のようになります。
c# - C#XmlSerializer BindingFailure
XmlSerializerを使用してコード行でBindingFailureを取得します。
表示名CustomXMLSerializeObject.XmlSerializers'のアセンブリは、ID1のAppDomainの'LoadFrom'バインディングコンテキストでロードできませんでした。失敗の原因は次のとおりです。System.IO.FileNotFoundException:ファイルまたはアセンブリをロードできませんでしたXMLSerializeObject.XmlSerializers、バージョン= 1.4.0.0、Culture = neutral、PublicKeyToken =null'またはその依存関係の1つ。システムは、指定されたファイルを見つけることができません。
エラーは非常に長く、バインド前の状態情報と、ファイルを検索するために探した場所を説明します。
私がdesrializeしようとしているカスタムオブジェクトは比較的単純です-パブリックアクセサーを持つプライベート整数と文字列の束です。別のカスタムシリアル化可能なクラスであるプライベート変数がありますが、パブリックアクセサーを含むプライベート文字列しかありません。
厄介な部分?これは、逆シリアル化した場合にのみ発生します。オブジェクトをシリアル化すると、そのコード行は正常に実行されます。それは正常に動作し、オブジェクトは逆シリアル化され、完全に入力されます。パフォーマンスの低下や長い読み込み時間に気付かないでください。
この警告は正確には何ですか(エラーや例外ではなく、プログラムは後で正常に実行されます)?なぜそれが起こるのですか?単に警告を無効にせずにそれを防ぐにはどうすればよいですか?
c# - XmlSerializer リスト項目要素名
クラスがありますPersonList
これを XML にシリアル化すると、デフォルトで次のようなものが生成されます。
私の質問は、出力で要素Human
を変更するために何をする必要があるのですか? Person
したがって、出力は次のようになります。
そして、上記の XML をPersonList
クラス オブジェクトに逆シリアル化する方法は?
ニックのアドバイスに従って、これが私のテストコードです:
テスト コードの出力は次のとおりです。
出力が示すように、[XmlRoot("Person")]
onはタグをfromHuman
に変更しません。Person
Human
c# - XML シリアル化と名前空間プレフィックス
クラスを XML にシリアル化して名前空間を追加できる C# の方法を探していますが、その名前空間が使用するプレフィックスを定義します。
最終的に、次の XML を生成しようとしています。
DataContractSerializer
と の両方でXmlSerializer
名前空間を追加できることはわかっていますが、制御できないもので内部的にプレフィックスを生成しているようです。これらのシリアライザーのいずれかで制御できますか (どちらも使用できます)?
名前空間の生成を制御できない場合、独自の XML シリアライザーを作成する必要があります。
c# - ジェネリック型制約を使用すると、XmlSerializer が InvalidOperationException をスローします。
次のコードを実行しようとすると (2 つの別個のアセンブリ)
ClassLibrary.cs
Program.cs
次のコマンドを使用して Windows 7 64 ビットでコンパイル:
c:\Windows\Microsoft.NET\Framework\v2.0.50727\csc /target:library ClassLibrary.cs
c:\Windows\Microsoft.NET\Framework\v2.0.50727\csc /reference:ClassLibrary.dll Program.cs
私はこの例外を受けています:
System.InvalidOperationException: 一時クラスを生成できません (結果 = 1)。エラー CS0012: ITest 型は、参照されていないアセンブリで定義されています。アセンブリ ClassLibrary、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null ヒンズーへの参照を追加する必要があります。
System.Xml.Serialization.Compiler.Compile (アセンブリの親、文字列 ns、XmlSerializerCompilerParameters xmlParameters、証拠の証拠)
で System.Xml.Serialization.TempAssembly.GenerateAssembly (XmlMapping[] xmlMappings、Type[] の種類、文字列 defaultNamespace、証拠の証拠、 XmlSerializerCompilerParameters パラメーター、アセンブリ アセンブリ、Hashtable アセンブリ) の System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings、Type[] タイプ、文字列の defaultNamespace、文字列の場所、証拠の証拠) の System.Xml.Serialization.XmlSerializer.GenerateTempAssembly System.Xml.Serialization.XmlSerializer..ctor (型の種類、文字列の defaultNamespace) で Program.Main(String[] args) で (XmlMapping xmlMapping、型の型、文字列の defaultNamespace)
where T : ITestをTestClassから削除するか、ジェネリックをまったく使用しない (たとえば、public void Test(ITest x)を使用する) と、例外がスローされなくなりますが、実際のアプリケーションではこの構成が必要です。
XmlSerializer が where 制約を処理できない理由を理解している人はいますか?
c# - XmlReader が名前空間 uris を各要素に追加するのはなぜですか?
C# オブジェクトに逆シリアル化したい次の形式の xml を含むストリームがあります。
私はこれを文字列で何度も実行しましたが、ストリームでは、名前空間属性をすべての複雑な要素に親切に追加しています。xmlns 属性を削除しただけで、スキーマに対する検証を忘れると、空の xmlns 属性が追加されるだけです。私が抱えている問題は、XmlSerializer (?) の Deserialize メソッドが、属性を想定していないというエラーをスローすることです。クラスを XmlRoot 属性と XmlType 属性で装飾しようとしましたが、何も変わりませんでした。
これが私がデシリアライズしたいクラスです
作業を行うために使用されている方法は次のとおりです
私は DataContractSerializer を使用してこれを試しましたが、それは学習する独自の機会をもたらします。そのため、XmlSerializer を機能させるために属性に入れるべきものを誰かが助けることができれば、それは素晴らしいことです.
どんな助けでも感謝します、ありがとう。
c# - XmlSerializerの出力を検証するにはどうすればよいですか?
C#/ .NET 2.0で、XmlSerializerを使用してオブジェクトをシリアル化する場合、XMLスキーマに対して出力を検証する最も簡単な方法は何ですか?
問題は、XmlSerializerを使用して無効なXMLを作成するのは非常に簡単であり、面倒に見えないXMLを検証する方法が見つからないことです。理想的には、XmlSerializerでスキーマを設定するか、検証するXmlWriterを使用することを期待します。
.net - XmlSerializer.Deserialize() が 1MB を超えるファイルで遅すぎる - .Net コンパクト フレームワーク 3.5 sp1
xsd.exe を使用して Class を生成する XML スキーマを取得しましたFooClass
。
ホストから xml リクエストを受信しています。これをディレクトリから取得し、 を使用しXmlSerializer.Deserialize()
て .xml のインスタンスを取得しますFooClass
。
さて、これは今まで完全に機能し、今でも機能していますが、突然、より大きな XML ファイル (約 300KB) を取得するようになり、時間がかかりすぎてDeserialize()
受け入れられません! 同じ XML ファイルの読み込みにXMLTextReader()
は数ミリ秒かかり、逆シリアル化にかかる時間は約 1 分 30 秒です。
そこで、XMLReader を使用して XML ファイルを読み取り、FooClass
自分でビルドしようと思いました。しかし、すべてのコードを作り直す前に、XmlSerializer.Deserialize()
より高速な使用方法があるかどうかお尋ねしたいと思います。
XMLSerializer Assembly がここで役立つかどうかはわかりません。
ここに、各ファイルのループで呼び出される私のコードがあります
前もってありがとう、AK
.net - XmlSerializer.Deserializeを使用したFormatExceptionsの処理
このxmlを返すサードパーティのWebサービスがあります
私はそれをこのクラスに逆シリアル化しようとしています
しかし、0000-00-00
は有効DateTime
ではないため、FormatExceptionが発生します。これを処理するための最良の方法は何ですか?
c# - XMLSerializer を使用してプレフィックスなしでデフォルトの名前空間を追加するにはどうすればよいですか
XmlSerializer
を使用して、プレフィックスのないデフォルトの名前空間を含む XML ドキュメントを生成しようとしています。
次のコードを使用して...
そしてクラス構造...
今、私はさまざまなオプションを試しました...
また ...
私に与える...
サードパーティのプロバイダーに送られ、他のすべての代替手段が拒否されるため、プレフィックスのない名前空間を持つ XML が必要です。