今天我给大家分享一个XML的实际应用,利用XML作为小型数据库存储英文单词信息,然后通过网页搜索单词,然后显示该单词的意思和例句等,我会使用Dom方式和Xpath方式来查询XML文件中的信息。
dict.xml部分内容:
查询页面代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>电子词典</title>
<link rel="stylesheet" href="">
</head>
<body>
<h1>电子词典页面</h1>
<form action="query.php">
单词:<input type="text" name="word"/><br/>
<input type="submit" value="查询" />
</form>
</body>
</html>
查询页面:
1、使用Dom方式查询
代码:
<?php
/**
* 电子词典
* @author webbc
*/
header('Content-type:text/html;charset=utf-8');
$word = $_GET['word']?trim($_GET['word']):'';
if(empty($word)){
echo "查啥啊?";
exit;
}
$isfind = false;
//1、dom方式进行查询
$dom = new DOMDocument('1.0','utf-8');
$dom->load('./dict.xml');
$nameList = $dom->getElementsByTagName('name');
foreach($nameList as $v){
if($v->nodeValue == $word){
echo $word.'<br/>';
echo '意思:'.$v->nextSibling->nodeValue.'<br/>';
echo '例句:'.$v->nextSibling->nextSibling->nodeValue.'<br/>';
$isfind = true;
}
}
if(!$isfind){
echo '没有找到!';
}
?>
2、使用Xpath方式查询
代码:
<?php
/**
* 电子词典
* @author webbc
*/
header('Content-type:text/html;charset=utf-8');
$word = $_GET['word']?trim($_GET['word']):'';
if(empty($word)){
echo "查啥啊?";
exit;
}
$isfind = false;
//2、xpath方式进行查询
$dom = new DOMDocument('1.0','utf-8');
$dom->load('./dict.xml');
$xpath = new DOMXPath($dom);
$sql = '/dict/word[name="'.$word.'"]';
$wordList = $xpath->query($sql);
if($wordList->length === 0){
echo "没有找到!";
exit;
}
echo '单词:'.$wordList->item(0)->firstChild->nodeValue."<br/>";
echo '意思:'.$wordList->item(0)->firstChild->nextSibling->nodeValue.'<br/>';
echo '例句:'.$wordList->item(0)->firstChild->nextSibling->nextSibling->nodeValue;
?>
查询结果:
注意:如果使用dom方式查询会比使用xpath方式慢很多,希望大家都使用xpath方式!