問題タブ [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.
xml - .net 2 で XML 構造を解析する
次のxmlフラグメントがあります
c1="XXX" および c2="ZZZ" を持つコンバーターの "buy" 属性の数値の値を取得しようとしています。
残念ながら、linq を XML に使用することはできません。または、これは簡単です (私にとっては)。だから私はxpathを使って立ち往生していると思います
XPathNavigator を作成しましたが、必要な値を取得するための構文を取得できません
誰でも、これを行う方法はありますか?
xml - XPath述語の問題
XPathNavigator.Selectメソッドを使用して、ネストされた要素内から人の名前とIDを選択する述語を持つXPath式があります。
これは機能します:
これも機能します:
述語を次のレベルに持っていくと、機能しません。
フィルタリングは取得しませんが、セット全体を取得します。
これは、XPathまたはASP.NETに固有の制限によるものですか、それとも私が愚かなことをしているためですか?
以下は、関連するXMLファイルの抜粋です。
xpath - XPath式をより一般的にするにはどうすればよいですか?
追加できる子ブランチを含むナビゲーションツリーのxpath式があります。
私はそれを以下に与えられたような一般的なステートメントにする必要がありますが、それを行うことはできません
誰かが光を当てることができますか?
コメントからの更新
3つの子ノード[最初の式にdiv[1]、2番目の式にdiv [2]、3番目の式にdiv [3]が表示されるので、div [100]まで書き込む代わりに、div [%dとして配置します。 ]しかし、私はそうすることができません
c# - Xpath Navigator を使用して、存在しない場合は XML 属性を追加します。
存在しない場合にのみ属性を追加したい。
.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
、どうやらそれは... 空の文字列 (つまり、""
) も同様のようです。おそらく問題は、要素を空白だけに置き換えようとすることです。なぜそれが問題になるのかわかりません。
c# - XPathNavigator.SelectSingleNode(string xpath)を使用してノードを選択するにはどうすればよいですか?
私はこのxmlファイル「target.xml」を持っています:
メソッドBindCities(string country)で、country要素()にアクセスしようとしていますが、nav変数は、コードの実行後にその値をcountry要素に変更せず、最後の場所にとどまります。私はたくさんの方法を試しましたが、何もうまくいきませんでした。
nav XPathNavigatorを使用してcountry要素に到達するにはどのコードが必要ですか?
返信ありがとうございます!
c# - XpathNavigatorとHtmlAgilityPackを使用してInnerHtml値を検索します
test.xmlの一部
// XpathNavigatorを作成して、td内の最後の値を取得します。つまりdesc9
デバッガーは、値が以下のように評価できることを示していますが、これは非常に面倒です。
desc9に到達するための最良の方法は何ですか?
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 クラスを作成するにはどうすればよいでしょうか?
どうもありがとうございました。
c# - Xpath ナビゲーターを使用して空のノードを更新する方法
私はこのようなXMLを持っています
ここで「値」は空のノードです。Xpath ナビゲーターを使用すると、Value ノードに到達できますが、更新できません。次のようなものを使用:
このノードを編集する方法、つまり文字列パスにできる値を追加する方法を教えてください。
最後に追加されますか?