XPath快速解析XML
为什么要使用XPATH,上一篇博客查询越靠近下面单词,时间会越长,超过2s就不太好了,XPAth就是用来提高解析XML速度的。还可以解析html,效率也是不错的! 分别查询下列信息 代码: vcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:sql;">?php// 详细学习可以参考w3
为什么要使用XPATH,上一篇博客查询越靠近下面单词,时间会越长,超过2s就不太好了,XPAth就是用来提高解析XML速度的。还可以解析html,效率也是不错的!
分别查询下列信息
代码:喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:sql;">load('book.xml');
$xpath = new DOMXPATH($xml);
/*
$sql = 'xxx'; // 路径表达式
$xpath->query($sql);
*/
/*
xpath的路径表达式如何写?
xpath是从根节点到某个节点声经过的路径
*/
// 查询book.xml下面的每本书的title
// /bookstore/book/title
/*
$sql = '/bookstore/book/title';
$rs = $xpath->query($sql);
print_r($rs);
echo $rs->item(1)->nodeValue;
*/
// 查询book.xml下面book节点的下面的第2个title节点,哪来的第2个title节点? 这样写是不对的
/*
$sql = '/bookstore/book/title[2]';
$rs = $xpath->query($sql);
print_r($rs->length);
*/
// 查询bookestore下面的第2本书下面的title节点.
/*
$sql = '/bookstore/book[2]/title';
$rs = $xpath->query($sql);
print_r($rs->item(0)->nodeValue);
*/
// 查询bookstore下面的book节点并且价格>40元
/*
$sql = '/bookstore/book[price>40]/title';
$rs = $xpath->query($sql);
echo $rs->item(0)->nodeValue;
*/
// 查询侠客行的价格
// /bookstore/下面的book,且title=='侠客行'的书的价格
$sql = '/bookstore/book[title="侠客行"]/price';
$rs = $xpath->query($sql);
echo $rs->item(0)->nodeValue;
xpath如何不考虑路径的层次,来查询某个节点
比如我们刚才严格层次查询 /bookstore/book/title
现在我们加了一个,
<?php $xml = new DOMDocument('1.0','utf-8'); $xml->load('book.xml'); $xpath = new DOMXPATH($xml); $sql = '/bookstore/book[last()]/title'; $rs = $xpath->query($sql); // 只能查到书名的title //echo $rs->item(0)->nodeValue; // 思考 ,如何查询所有的title,不考虑层次关系? $sql = '/title'; // 这样不行,这样查的是根节点下的title,而根节点下没有title /* /a/b,这说明,a,b就是父子关系,而如果用/a//b,这样说明a只是b的祖先就行,忽略了层次 */ // 不分层次,查出所有的title /* $sql = '//title'; foreach($xpath->query($sql) as $v) { echo $v->nodeValue,'<br />'; } */ /* $sql = '//title[2]'; // 这样又理解成<title>a</title><title>b</title>,查询所有相邻的title节点,且第2个 foreach($xpath->query($sql) as $v) { echo $v->nodeValue,'<br />'; } */
上面是简单应用,来改善上篇博客效率问题
<?php // 接收单词并解析XML查询相应的单词 $word = isset($_GET['word'])?trim($_GET['word']):''; if(empty($word)) { exit('你想查啥?'); } // 解析XML并查询 $xml = new DOMDocument('1.0','utf-8'); $xml->load('./dict.xml'); /* $namelist = $xml->getElementsByTagName('name'); $isfind = false; foreach($namelist as $v) { if($v->nodeValue == $word) { //print_r($v); echo $word,'<br />'; echo '意思:',$v->nextSibling->nodeValue,'<br />'; echo '例句:',$v->nextSibling->nextSibling->nodeValue,'<br />'; $isfind = true; break; } } if(!$isfind) { echo 'sorry'; } */ // 接下来用xpath来查询词典 $xpath = new DOMXpath($xml); // 查询/dict下的word,且name=$word的节点下面的/name节点 $sql = '/dict/word[name="' . $word . '"]/name'; //echo $sql; $words = $xpath->query($sql); if($words->length == 0) { echo 'sorry'; exit; } // 查到了 $name = $words->item(0); echo $word,'<br />'; echo '意思:',$name->nextSibling->nodeValue,'<br />'; echo '例句:',$name->nextSibling->nextSibling->nodeValue,'<br />';
来解析一下的html
<?php /*** ====笔记部分==== xpath是根据DOM标准来查询, html也是DOM, 也能查,岂只是xml ***/ $html = new DOMDocument('1.0','utf-8'); $html->loadhtmlfile('dict.html'); $xpath = new DOMXPATH($html); $sql = '/html/body/h2'; echo $xpath->query($sql)->item(0)->nodeValue,'<br />'; // 查询id="abc"的div节点 $sql = '//div[@id="abc"]'; echo $xpath->query($sql)->item(0)->nodeValue; // 分析第2个/div/下的p下的相邻span的第2个span的内容 $sql = '//div/p/span[2]'; echo $xpath->query($sql)->item(0)->nodeValue;

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









H5ページは、コードの脆弱性、ブラウザー互換性、パフォーマンスの最適化、セキュリティの更新、ユーザーエクスペリエンスの改善などの要因のため、継続的に維持する必要があります。効果的なメンテナンス方法には、完全なテストシステムの確立、バージョン制御ツールの使用、定期的にページのパフォーマンスの監視、ユーザーフィードバックの収集、メンテナンス計画の策定が含まれます。

JavaScriptはHTML5なしで実行できますか? JavaScriptエンジン自体は独立して実行できます。ブラウザ環境でJavaScriptを実行すると、コードをロードおよび実行するために必要な標準化された環境を提供するため、HTML5に依存します。 HTML5が提供するAPIと機能は、最新のJavaScriptフレームワークとライブラリにとって重要です。 HTML5環境がなければ、多くのJavaScript機能を実装が困難であるか、実装できません。

フレックスレイアウトの紫色のスラッシュ領域に関する質問フレックスレイアウトを使用すると、開発者ツールなどの混乱する現象に遭遇する可能性があります(D ...

H5ページの生産の利点には、軽量エクスペリエンス、積み込み速度、ユーザー保持の改善が含まれます。クロスプラットフォームの互換性、さまざまなプラットフォームに適応する必要はなく、開発効率を向上させます。柔軟性と動的な更新、監査が不要で、コンテンツの変更と更新が容易になります。ネイティブアプリよりも費用対効果の高い開発コスト。

ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。

ユーザーエージェントスタイルシートによって引き起こされるディスプレイの問題を解決する方法は? Edgeブラウザを使用する場合、プロジェクトのDIV要素を表示することはできません。チェックした後、私は投稿しました...

Safariでカスタムスタイルシートを使用することについてのディスカッション今日は、Safariブラウザ向けのカスタムスタイルシートのアプリケーションに関する質問について説明します。フロントエンド初心者...

同じオリジンのタグリンクの場合、画像を自動的にダウンロードする問題に関して、多くの開発者は、同じオリジンのタグリンクを使用したときにクリックした後に画像に遭遇します...
