問題タブ [xpathnavigator]

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 に答える
616 参照

xml - .net 2 で XML 構造を解析する

次のxmlフラグメントがあります

c1="XXX" および c2="ZZZ" を持つコンバーターの "buy" 属性の数値の値を取得しようとしています。

残念ながら、linq を XML に使用することはできません。または、これは簡単です (私にとっては)。だから私はxpathを使って立ち往生していると思います

XPathNavigator を作成しましたが、必要な値を取得するための構文を取得できません

誰でも、これを行う方法はありますか?

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

xml - XPath述語の問題

XPathNavigator.Selectメソッドを使用して、ネストされた要素内から人の名前とIDを選択する述語を持つXPath式があります。

これは機能します:

これも機能します:

述語を次のレベルに持っていくと、機能しません。

フィルタリングは取得しませんが、セット全体を取得します。

これは、XPathまたはASP.NETに固有の制限によるものですか、それとも私が愚かなことをしているためですか?

以下は、関連するXMLファイルの抜粋です。

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

xpath - XPath式をより一般的にするにはどうすればよいですか?

追加できる子ブランチを含むナビゲーションツリーのxpath式があります。

私はそれを以下に与えられたような一般的なステートメントにする必要がありますが、それを行うことはできません

誰かが光を当てることができますか?

コメントからの更新

3つの子ノード[最初の式にdiv[1]、2番目の式にdiv [2]、3番目の式にdiv [3]が表示されるので、div [100]まで書き込む代わりに、div [%dとして配置します。 ]しかし、私はそうすることができません

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

c# - Xpath Navigator を使用して、存在しない場合は XML 属性を追加します。

存在しない場合にのみ属性を追加したい。

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

.net - System.Xml.XmlDocument、System.Xml.XPath.XPathNavigator{ReplaceSelf、OuterXml}: ドキュメント内のプレースホルダーの置き換え

私は現在、約 1 年ほど前に仕事のために書いた Web アプリケーションを保守しています。基本的に、ユーザーはカスタム XHTML レポート テンプレートを作成できます。XmlDocument、、などを使用しますXPathNavigator。アル。プレースホルダーをデータで検証、サニタイズ、および置換します。

ほとんどの場合は問題なく動作しますが、プレースホルダー要素を実際にデータに置き換えているのではなく、プレースホルダーのテキストをデータ テキストに置き換えていることに気付きました。

考案された例:

なるだろう...

テンプレートは 1 回しか処理されなかったため、これは以前は実際には問題ではありませんでした。ユーザーが選択したデータのセットに対して実行することを選択したとき。ただし、現在は、結果の出力をプレビューして、印刷する前に変更するオプションを提供しています。この結果、置換エンジンによって複数回処理されます。最初に元の出力を生成し、変更された出力が「印刷」されるときに再度処理されます。置換エンジンは、実際にはデータであるプレースホルダーを見つけ、置換する対応するデータ要素を見つけることができず、プロセスは例外で失敗します。

元のコードでは、XPathNavigator.InnerXmlプロパティを使用して、プレースホルダー要素の内容を "{CompanyName}" から "Castopulence" に変更しました (例):

したがって、このプレースホルダー要素を完全に置き換えたい場合は、代わりに次を使用するのが合理的ですXPathNavigator.OuterXml

これはほとんどの場合に機能するように見えますが、少なくとも私は機能すると思いますが、一見ランダムな置換により、常にSystem.InvalidOperationException「操作の結果としてコンテンツが生成されません」というメッセージがスローされます。そのため、それらのいずれかが機能しているとは確信していませんが、以前の置換に対して例外がスローされていないため、機能していると思います。

これが何を意味するのかよくわかりません。Google には、例外メッセージの正確なフレーズの結果が 4 つしかありません。それぞれ、私が話せない言語で書かれています。それらをGoogleで翻訳すると、関連するものは何も明らかになりませんでした。

実験的に試してみXPathNavigator.ReplaceSelfましたが、同じことを達成しているようですが、残念ながら同じ内部呼び出しから同じ例外がスローされます。

どちらの場合もスタック トレース:

System.Xml.DocumentXmlWriter.Close (WriteState currentState)
で System.Xml.XmlWellFormedWriter.Close()
で System.Xml.XPath.XPathNavigator.ReplaceSelf (XmlReader newNode)
で System.Xml.XPath.XPathNavigator.ReplaceSelf (文字列 newNode) で
...プライベート アプリケーションのシンボルを切り取った...

スローされる例外については、MSDN リファレンスReplaceSelf説明されていますが、スローされる唯一のSystem.InvalidOperationException例外は、「XPathNavigator が要素、テキスト、処理命令、またはコメント ノードに配置されていない」場合です。Visual Studio デバッガーから、要素に配置されていることを確認できます。私のコードは同意します。XPathNavigatorプレースホルダーを指している は、実際には のクローンです(System.Xml.XPath.XPathNodeIterator.Currentこれらはすべてリストに追加され、配列に変換され、置換フェーズで反復処理されます)。

何が問題なのか (例外は実際には何を意味するのか)、どうすれば修正できますか?

追加:実際に例外をスローしているクラス ( System.Xml.DocumentXmlWriter) は、MSDN で文書化されていないようです (少なくとも、Google 検索でも MSDN 検索でも見つかりませんでした)。

追加:問題を引き起こしている 1 つの置換のデータは、単一のスペース (つまり、" ") であると判断しました。なぜこれが の問題になるのかはわかりませんがXPathNavigator、どうやらそれは... 空の文字列 (つまり、"") も同様のようです。おそらく問題は、要素を空白だけに置き換えようとすることです。なぜそれが問題になるのかわかりません。

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

c# - XPathNavigator.SelectSingleNode(string xpath)を使用してノードを選択するにはどうすればよいですか?

私はこのxmlファイル「target.xml」を持っています:

メソッドBindCities(string country)で、country要素()にアクセスしようとしていますが、nav変数は、コードの実行後にその値をcountry要素に変更せず、最後の場所にとどまります。私はたくさんの方法を試しましたが、何もうまくいきませんでした。

nav XPathNavigatorを使用してcountry要素に到達するにはどのコードが必要ですか?

返信ありがとうございます!

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

c# - XpathNavigatorとHtmlAgilityPackを使用してInnerHtml値を検索します

test.xmlの一部

// XpathNavigatorを作成して、td内の最後の値を取得します。つまりdesc9

デバッガーは、値が以下のように評価できることを示していますが、これは非常に面倒です。

desc9に到達するための最良の方法は何ですか?

0 投票する
0 に答える
204 参照

equivalent - ASP.NET 1.1 - XPathNavigator OuterXml と同等

Google Maps API を使用して 1.1 で GeoCode ルックアップを行っていますが、XPathNavigator オブジェクトでレンガの壁にぶつかっています。

「サブナビゲーター」を作成して、返される Address の精度に応じて xml スキーマが変化するため、ノード (例: //adr:PostalCodeNumber) のグローバル xpath 検索を実行できるようにする必要があります。

応答の例を次に示します。

この 2.0 のコード ブロックがあり、OuterXml プロパティに相当する 1.1 を見つけようとしています。

このブログ記事を見つけましたが、SerializableXPathNavigator ソースへのリンクは無効になっています。=(

http://www.tkachenko.com/blog/archives/000155.html

私の初心者で申し訳ありませんが、独自の OuterXml メソッドを使用して独自の SerializableXPathNavigator クラスを作成するにはどうすればよいでしょうか?

どうもありがとうございました。

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

c# - Xpath ナビゲーターを使用して空のノードを更新する方法

私はこのようなXMLを持っています

ここで「値」は空のノードです。Xpath ナビゲーターを使用すると、Value ノードに到達できますが、更新できません。次のようなものを使用:

このノードを編集する方法、つまり文字列パスにできる値を追加する方法を教えてください。

最後に追加されますか?