まず第一に、xPath とは何ですか: xPath は、xml 内の情報を検索するための言語です。
Path には、要素、属性、テキスト、名前空間、処理命令、コメント、ドキュメントの 7 種類のノードが含まれています。ルートノード。 XML 文書は文書ツリーの構造に従って解析され、文書ツリーのルートは文書ノードまたはルート ノードと呼ばれます。
これは、基本的な XML ドキュメントのソース コードです。この XML ソース コードから、bookstore がドキュメント ノード (ルート ノード)、book であることがわかります。 、タイトル、著者、年、価格が要素ノードです。 book ノードには 4 つの子要素ノード (title、author、year、price) があり、title ノードには 3 つの兄弟要素 (author、year、price) があります。 title 要素ノードには属性とテキスト ノードがあり、属性ノードは lang で、その値は en、テキスト ノードの値は HarryPotter です。
以下に、XML ノードの関係の説明がいくつかあります (データ構造のツリーと同様):
親: book ノードの親は書店で、book ノードはタイトル、著者、年、価格 ノードの親。 (各ノードは親を 1 つだけ持つことができます)。
子: book は書店の子であり、book ノードの子はタイトル、著者、年、価格の子です。
(要素ノードは、0 個、1 個、または複数の子を持つことができます)。
タイトルの兄弟要素には、作成者、年、価格が含まれます。これらの要素は、ツリー構造の兄弟ノードと同様に、同じ親ノードを持ちます。 (ノードには兄弟が存在しない場合もあれば、1 つ以上の兄弟を持つこともできます)。
祖先: ノードの親、親の親、親の親の親 (無限ループ)、タイトル要素ノードの祖先は book と本屋です。
子孫: ノードの子、子の子、子の子 (無限ループ)、書店ドキュメント ノードの子孫は、book、タイトル、著者、年、価格、言語です。
xml のノード関係を知るだけでは十分ではありません。それがどのようにクエリされるのかも知る必要があります。xPath はパス式を使用してドキュメント内のノードまたはノード セットを選択します。ノードはパスまたはステップに沿って選択されます。
#XPath は、パス式を使用して XML ドキュメント内のノードを選択します。ノードはパスまたはステップをたどることによって選択されます。最も便利なパス式を以下に示します。
nodename: このノードのすべてのノードを選択します
/: ルート ノードから選択します
//: 一致するノードから選択します現在のノードは、その位置に関係なくドキュメント内のノードを選択します
.: 現在のノードを選択します
..: 現在のノードの親ノードを選択します
@: 属性を選択します
xpath クエリ構文を直接使用して js 経由でクエリを実行しましょう
まず、xpath 呼び出しに関する HTML ファイル テンプレートを記述し (呼び出しコードは js に記述されます)、次にクエリ用の XML ファイルを準備します。
js テンプレートのソース コードは次のとおりです。
https://www.runoob.com/try/try.php?filename=try_xpath_select_cdnodes
これを見てください。このHTMLを1つずつ ファイル内のjsコード(jsコードしかないので)
これはjsの非同期呼び出し関数です。重要なコードは次のとおりです。 15 行目と 17 行目で関数によって渡される dname 関数は xml のパスであり、取得された xml ファイルが 17 行目で返されます。
20行目を参照してください。変数xmlはloadXMLDOC関数実行後に取得されるXMLファイルを取得します。 21 行目の path 変数は、xpath のクエリ構文です。最初のif文でIE6以下のブラウザかどうかを判定し、IE6以下のブラウザであれば、対応するクエリのノード配列を取得した後、配列内の値を走査してページに出力します。
2 番目の if ステートメントは、IE6 以外のブラウザでも同じ実行プロセスを持ちますが、構文が若干異なります。IE6 以外のブラウザは評価を渡します。クエリには関数を使用し、基本的に形式は決まっているので、先ほどの構文を練習してみましょう。
クエリ構文の置換には、パスの値の変更のみが必要です。
最初に、クエリする必要がある構文をリストします。
注: パスがスラッシュ (/) で始まる場合、このパスはwill は常に要素への絶対パスを表します。
bookstore: 書店要素のすべての子ノードを選択します。
/bookstore: ルート要素のbookstoreを選択します。
bookstore/book:bookstore の子要素であるすべての book 要素を選択します。
//book: ドキュメント内の位置に関係なく、すべての book 子要素を選択します。
bookstore//book:bookstore: の下の位置に関係なく、bookstore 要素の子孫であるすべての book 要素を選択します。
//@lang: lang という名前の属性をすべて選択します。
これらの単一クエリのみを使用すると、期待した結果が得られない可能性があるため、他のクエリ ステートメントと組み合わせる必要があります。以下は、一致する必要がある構文の一部です:
Predicate (より正確なクエリ結果を取得するには、角括弧を使用します):
Select the path of the first sub-element book of書店要素を /bookstore /book[1] に追加します。
/bookstore/book[last()]:bookstore の子要素である最後の book 要素を選択します。
/bookstore/book[last()-1]:bookstore の子要素である最後から 2 番目の book 要素を選択します。
/bookstore/book[position()
//title[@lang]: lang という名前の属性を持つすべての title 要素を選択します。
//title[@lang='eng']: eng の値を持つ lang 属性を持つすべての title 要素を選択します。
/bookstore/book[price>35.00]: 本屋要素のすべての book 要素を選択します。price 要素の値は 35.00 より大きくなければなりません。
/bookstore/book[price>35.00]/title:bookstore 要素内の book 要素のすべての title 要素を選択します。price 要素の値は 35.00 より大きくなければなりません。
不明なノードを選択:
*: 任意の要素ノードと一致します。
##@*: 任意の属性ノードと一致します。 node(): 任意のタイプのノードに一致します。 例: /bookstore/*:bookstore 要素のすべての子要素を選択します。 //*: ドキュメント内のすべての要素を選択します。 //title[@*]: 属性を持つすべてのタイトル要素を選択します。 いくつかのパスを選択します: //book/title | //book/price: book 要素のすべての title 要素とprice 要素を選択します。 //title | //price: ドキュメント内のすべてのタイトル要素と価格要素を選択します。 /bookstore/book/title | //price: 書店要素の book 要素に属するすべての title 要素と、ドキュメント内のすべてのprice 要素を選択します クエリの例をいくつか見てみましょう:2 番目の本のタイトル値をクエリ:/bookstore/book[1]/title以上がxPath インジェクションの基本的な構文は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 中国語版
中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
