問題タブ [xmlreader]

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.

0 投票する
2 に答える
29130 参照

web-services - WebService 呼び出しでの文字列のシリアル化エラー

今朝、Web サービス呼び出しの結果としてテキスト文字列が返されるという問題に遭遇しました。私が得ていたエラーは以下です

検索を行った結果は以下のとおりです。 検索結果

それらのほとんどは WCF 関連ですが、正しい方向に向けるのに十分でした。返信として回答を投稿します。

0 投票する
2 に答える
5031 参照

.net - XmlReader ReadSubtree() の悪用

実際には非常に大きなツリー構造のイメージである xml ファイルを解析する必要があるため、XmlReader クラスを使用してツリーを「オンザフライ」で設定します。各ノードには、ReadSubtree() 関数を介して、その親から期待される xml チャンクだけが渡されます。これには、ノードがすべての子をいつ消費したかを気にする必要がないという利点があります。何千ものノードが存在する可能性があり、.NET ソース ファイルを読み込んでいるときに、ReadSubtree 呼び出しごとに新しいオブジェクトがいくつか (おそらくそれ以上) 作成されていることがわかったので、これが実際に良い考えであるかどうか疑問に思っています。再利用可能なオブジェクトのキャッシュは作成されません (私が見たものです)。

ReadSubtree() が大量に使用されるとは考えられていなかったのかもしれませんし、ファイルを解析した後に GC.Collect() を呼び出す必要があるだけで、何も心配していないのかもしれません...

誰かがこれに光を当ててくれることを願っています。

前もって感謝します。

アップデート:

素晴らしく洞察に満ちた回答をありがとう。

.NET ソース コードを詳しく調べたところ、最初に想像したよりも複雑であることがわかりました。私は最終的に、まさにこのシナリオでこの関数を呼び出すという考えを放棄しました。Stefan が指摘したように、xml リーダーは部外者に渡されることはなく、xml ストリームを解析するコード (自分で作成したもの) を信頼できるので、各ノードにデータ量の責任を負わせたいと思います。それほど薄くない ReadSubtree() 関数を使用して数行のコードを保存するよりも、ストリームから盗みます。

0 投票する
1 に答える
5347 参照

.net - XmlReader - 現在のノードを文字列として読み取る

次のスニペットでは、要素に遭遇したときに XmlReader を使用しています。要素内のすべての属性と名前空間の装飾を含めて、そのまま読みたいと思います。oXml.Name プロパティを使用すると、タグ名しか取得できません。タグ自体を取得する機能はありますか?

oXml.ReadOuterXml() を試しましたが、要素とそのサブコンテンツが返されます。それは受け入れられるかもしれませんが、ReadOuterXml から取得したばかりの要素が解析されたときに発生する後続の XmlNodeType.Text および XmlNodeType.EndElement を無視するには、XmlReader を早送りするにはどうすればよいでしょうか?

更新: 次のスニペットでは、loc1 はタグリストにあるため、ReadOuterXml を使用して記述されていますが、パーサーは次の「!」を取得できません。キャラクター。

0 投票する
1 に答える
20745 参照

c# - XmlReader - 自己終了要素は EndElement イベントを発生させませんか?

.NET で XmlReader を使用して、ループを使用して XML ファイルを解析しています。

次の XML コードが一部の EndElement ノードを生成しないのは正常なのだろうか? /> の前にスペースがないことに注意してください。しかし、それは問題ではないと思います。

自己閉鎖要素を示す別の NodeType またはプロパティはありますか?

0 投票する
2 に答える
12263 参照

c# - XmlReader での XML 要素の解析

XML フィードを介して実行する必要があるアプリケーションを構築していますが、特定の要素を取得するのに少し問題があります。

私はTwitter フィード<item>を使用しており、すべての要素を実行したいと考えています。正常に接続してフィードからコンテンツを取得できますが、itemループしているときに要素のみを選択する方法がわかりませんreader.Read();

ご協力いただきありがとうございます!

0 投票する
3 に答える
1178 参照

c# - 悪い xml データを処理するための正しいアプローチ

Web サービスから定期的に xml を取得し、データをデータベース テーブルに格納する小さな C# Windows サービスがあります。

残念ながら、Web サービスには時折不良データ (10 進数ではなく文字列) が含まれているため、失敗しています。Web サービスを制御することはできません (ソフトウェアからの検証されていないユーザー入力は変更できません) が、再入力できるように不良データをログに記録したいと考えています。

次のような単純なデータです。

このテーブルには、COL1 (NUMBER, 10)、COL2 (NUMBER, 10,2) の 2 つの列しかありません。

私は検証用の XmlReader とこの XSD を使用していました。

次に、データセットを dataset.ReadXml() および Update() します。

悪いデータにヒットするたびに、次の例外が発生します。

System.Xml.Schema.XmlSchemaValidationException が処理されませんでした

Message="'COL1' 要素が無効です - データ型 ' http://www.w3.org/2001/XMLSchema:decimal 'によると、値 'A40' は無効です' - 文字列 'A40' は有効な Decimal ではありません価値。"

この問題を回避する方法はいくつか考えられますが、それらはすべて少し面倒に感じます。もっと洗練された方法を学び、知識を向上させたいと思っています。これが私がこれまでに思いついたものです:

  • 検証用 XML リーダーにロードする前に、Web サービスによって提供された XML を前処理し、不良ノードを完全に削除します。
  • XmlSchemaValidationExceptions をキャッチし、それらから正常に続行しようとします (それについてはわかりません)。
  • 検証 XML リーダーを使用しないでください。代わりに、検証されていない xml をデータセットに読み込むときに例外をキャッチします。(これもよくわからない)
  • データセットに文字列列があり、更新するまで不良データを無視し、データベースが拒否したものをすべてキャッチします。
  • ユーザーが最初にそれを正しく理解できるようになるまで、大きなマレットを持ってユーザーの上に立ちます (時間がかかりすぎます)。
  • 他の何か?

更新: COL1 のユーザー入力を検証しないアプリケーションからデータが取得されるため、データが正しくない可能性がありますが、COL2 の数値は正しく計算され、COL1 は別のシステムに対応するはずです。無効なエントリは、修正できるように記録する必要があります。データがデータベースに書き込まれた後、別のシステムが COL1 が有効であることを確認し、ユーザーは他のシステムで正しく表示されない場合にすぐに気付くでしょう - とにかく手動でロードしていました :)

0 投票する
1 に答える
5290 参照

c# - StructureMap に特定のコンストラクターを使用するように指示する

を必要とする 2 つのサービスがありますXPathDocumentXPathDocumnet2 つのサービスの構成で使用する名前付きインスタンスを定義できるようにしたいと考えています。また、どのコンストラクターを使用するかを StuctureMap に伝えたいと考えていXPathDocumentます。のインスタンスを取得しようとするとXPathDocument、 の差し込まれたタイプが見つからないことがわかりますXmlReader。xml ファイルの文字列 uri を必要とするコンストラクターを使用したいと考えています。私はこれを機能させることができないようです。StructureMap 構成コードは次のとおりです。

0 投票する
2 に答える
2721 参照

c# - XMLTextReader.ReadSubtree が XMLTextReader を返す

XMLTextReader を使用して XML ファイルを処理しています (XMLDocument ではなく)。私は XMLTextReader を使用しているので、すべての空白を無視するオプションを使用できます。

特定の時点で、ReadSubtree を使用してノードを読み込みたいと思います。これは XMLReader を返します。これを XMLTextReader に変換して、空白を無視するオプションを使用するにはどうすればよいですか。

0 投票する
1 に答える
1113 参照

c# - カスタムスキーマ検証動作-XmlReaderSettings

必要に応じてスキーマ検証を実行するために、イベント処理セットアップを備えたXMLReaderSettingsオブジェクトを使用してXMLReaderでXMLを解析しています。

ただし、エラーキャッチはXMLのレベルごとに1回だけ発生するようです。これは、そのレベルでの後続のエラーが無視されることを意味します。

エラーが発生するたびにエラー処理イベントを発生させる方法はありますか?

編集:私もXmlSchemaValidatorを試しましたが、これは失敗しました。タグの本文内の最初のエラーのみをキャッチしました。

0 投票する
1 に答える
4939 参照

c# - スタック オーバーフローの RSS フィードを読む

フィードから未回答の質問のリストを取得しようとしていますが、読むのに苦労しています。

このような「コードを修正してください」という質問を投稿するのは嫌いですが、本当に行き詰まっています。いくつかのチュートリアルを試しました (コンパイル エラーが発生するものもありました) が、役に立ちませんでした。と を使用して正しい方向に進んでいると思いXmlReaderますXmlDocument。これは、各ガイドで一般的に行われていることです。