問題タブ [selectsinglenode]
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# - System.Xml.XPath.XPathException: SelectSingleNode("//(artist|author)") を実行する場合、式はノードセットに評価される必要があります
なぜこれが機能しないのか、誰かが説明してくれますか?
私は実行しています
そして私は得る
しかし、これは機能し、多くのアーティストノードがある場合でも例外は発生しません
c# - SelectSingleNodeがnullを返すのはなぜですか?
次のような構造を含むXMLドキュメントを使用しています。
私は現在、これをファイルからXMLドキュメントに次のようにロードしています。
ただし、次のコード行を実行しようとすると、問題が発生し、この1つの特定のドキュメントでのみ問題が発生します。
'id'という名前の属性の使用に問題があるため、これがnullを返していると推測して、正しい方向に進んでいますか、それともコードに何かが欠けていますか?
c# - SelectSingleNode での XPath の使用: 存在する場合、XML から個々の要素を取得する
私のXMLは次のようになります:
個々のアイテムの一部は、存在する場合と存在しない場合があります。存在する場合、要素<Item>
2</Item>
を取得したいとします。次の XPath を試しました (C# で)。
XMLNode node = myXMLdoc.SelectSingleNode("/itemSet[Item='two']")
--- Item twoが存在する場合、最初の要素oneのみが返されます。子として値 2 のアイテムがどこかにある場合、このクエリは itemSet の最初の要素を指すだけかもしれません。この解釈は正しいでしょうか?
だから私は試しました:
XMLNode node = myXMLdoc.SelectSingleNode("/itemSet[Item='two']/Item[1]")
--- このクエリは、<Item>
itemSet 内で value = 'two' を持つ最初の要素を返します。私は正しいですか?
これはまだ最初の要素oneのみを返します。私は何を間違っていますか?どちらの場合も、兄弟を使用して子ノードをトラバースしてtwoに到達できますが、それは私が見ているものではありません。また、two が存在しない場合、SelectSingleNode は null を返します。したがって、成功した戻りノードを取得しているという事実は、要素 2 の存在を示しているため、 boolean テストでtwoの存在を確認したい場合は、上記の XPath のいずれかで十分ですが、実際には次のように完全な要素が必要です<Item>two</Item>
。私のリターンノード。
[ここでの最初の質問であり、Web プログラミングを扱うのは初めてなので、SO の過去の質問から、上記の XPath と関連する xml をその場で学びました。だから優しくして、私がばかだったり、コミュニティのルールを無視していたりしたら教えてください。ありがとう。]
xml - XML ドキュメントでノードを選択すると Null が返される
XML の新機能。要素の値を更新して戻す必要がある XML ドキュメントを提供するサード パーティの Web サービスがあります。核となる問題は、以下のコードで node.RemoveAll() メソッドを呼び出すときに NullReferenceException エラーが発生することです。各要素には、提供されたときに xsi:nil 属性があるため、RemoveAll() メソッドを呼び出しています。要素の値を更新する前にそれを削除しないと、XML は Web サービスによって検証されません。
サード パーティの Web サービスによって提供される XML ドキュメントは次のとおりです。
私が見た他のソリューションでは XmlNamespaceManager を使用していましたが、機能させることができませんでした。この xml ドキュメントには、TaskData 要素に指定された名前空間と、RequestInfo 要素に別の名前空間が指定されています。名前空間ごとに XmlNamespaceManager 変数を指定しようとしましたが、同じ結果が得られました..ブレーク モードで nsmgr 変数にカーソルを合わせると、「子を評価できませんでした」と DefaultNamespace プロパティが空の文字列であることがわかります。
c# - C# SelectSingleNode - 再帰的に使えるか?
たとえば、XML ドキュメントがある場合
最初にノード「item」の最初の出現を見つけてから属性を更新し、次にノード「foo」の最初の出現を更新してから属性を更新したいなど、
私のコードは以下の通りです
属性の最初の検索と更新は正常に機能しますが、mySearchNode.SelectSingleNode が null を返すため、2 番目の検索と更新は失敗します。
質問 - このコードに根本的に間違っている点はありますか? SelectSingleNode が 2 番目のインスタンスで期待どおりに機能しないのはなぜですか。これに関する限り、Element 型の XmlNode で実行しています。
よろしくお願いします。
どうもありがとう、
escaping - バックスラッシュ SelectSingleNode Escape
Javascript には XML DOM があります。SelectSingleNode を使用して DOM 内のノードを選択しようとしています。cell.SelectSingleNode(stuff [@attrjunk = 'MATCH']) のようなもの。したがって、一致させたいのはバックスラッシュです。abc\xyz で一致させるには、MATCH を何に置き換えますか?? abc\xyz と abc\xyz を試しましたが、残念ながらどちらもうまくいかないようです...
selectsinglenode - IXMLDOMElementでsinglenodeを選択しますか?
IXMLDOMElementから単一ノードの選択を実行できますか?可能であれば、MSXMLを使用した例を1つ挙げてください。
c# - XML の解析: 要素内のコロンが原因で XPath がそれを見逃す
XML ドキュメントを読み込んで、XPath で検索しようとしています。このファイルのルート ノードは<t:Transmission xmlns:t='urn:InboundShipment'>
で、ファイルの末尾は で適切に閉じられてい</t:Transmission>
ます。
私の問題は、子孫軸を使用しないとツリーをたどることができないことです。言い換えると、次のことができます:SelectSingleNode("//TransactionHeader[SHIPPERSTATE='CA']")
そして見返りにノードを取得します。しかし、私は同等であるべきことを行うことができません:SelectSingleNode("/Transmission/TransmissionBody/Transaction/TransactionHeader[SHIPPERSTATE='CA']")
を削除するt:
と、XPath 検索を実行して/Transmission
ファイル全体を取得できます。そこにあると、t:
nullになります。または、試してみるSelectSingleNode("t:Transmission")
と、XPath ステートメントでエラーが発生します。
通常、ルート要素に対してクエリを実行する必要はないので、検索には子孫軸を使用するだけで十分です。しかし、XML は私には有効に見えるので、これに対処する方法を知りたいです。さらに、対処方法がわからないという理由だけで、クライアントに「t:」を削除するように依頼したくありません。
c# - SelectSingleNodeは常にnullを返しますか?
私のXMLのこの単純な例を取り上げます。
SelectSingleNodeメソッドを使用して「エラー」ノードを選択しようとしていますが、次のコードを使用すると、常にNULLが返されますか?
私が行った調査によると、これは名前空間に関連していますが、何も機能させることができません。何かアドバイス?
html-agility-pack - HTMLAgilityPack ChildNodes インデックスは機能するが、名前付きノードは機能しない
HTMLAgilityPack を使用して XML API 応答を解析しています。API 呼び出しから結果アイテムを選択できます。次に、アイテムをループして、ChildNodes をテーブルに書き込みたいと思います。次のように言って ChildNodes を選択すると:
適切な itemId の結果が得られます。しかし、私がしようとすると:
「参照されたオブジェクトの値は 'Nothing' です」というメッセージが表示されます。
「itemID[1]」、「/itemId[1]」、およびさまざまな文字列を試しました。SelectSingleNode と ChildNodes.Item("itemId").innertext を試しました。機能した唯一のものは、インデックスを使用することです。
インデックスを使用する際の問題は、子要素が結果で省略され、インデックスから外れることがあることです。
私が間違っていることを知っている人はいますか?