怎麼做詞典.xml之前已經寫過了
自己先弄的簡單版
<?xml version="1.0" encoding="utf-8"?>
<dict><word><name>cat</name><mean>貓</mean><eg>l have a cat.</eg></word><word><name>dog</name><mean>狗</mean></word><word><name>park</name><mean>公園</mean></word><word><name>today</name><mean>今天</mean></word><word><name>tree</name><mean>樹</mean></word><eg>例句例句</eg></dict>
html簡單查詢 就輸入英文點提交就行
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>在線詞典</title>
</head>
<body>
<form method="post" action="8finddict.php">
單詞<input type="text" name="danci">
<input type="submit">
</form>
</body>
</html>
分爲沒有xpath的普通解析
xpath解析
<?php
/*解析xml
快速查找xml 單詞 xpath*/
$word=$_POST['danci'];
$xml=new DOMDocument('1.0','utf-8');
$xml->load('./dict.xml');
// 普通解析
// 得到所有的name,再與你輸入的進行對比
/*
$namelist=$xml->getElementsByTagName('name');
foreach ($namelist as $k => $v) {
// print_r($v);
if($v->nodeValue == $word){
echo $word,'<br />';
echo '意思:',$v->nextSibling->nodeValue,'<br />';
echo '例句:',$v->nextSibling->nextSibling->nodeValue,'<br />';
break;
}
}
*/
//快速解析xpath
$xpath=new DOMXPATH($xml);
/*
$path='/dict/word/name';
$rs=$xpath->query($path);
// nodelist length 5 ,5個單詞
print_r($rs);
// 第一個 name domelement
print_r($rs->item(0));
// 第2個name nodevalue
print_r($rs->item(1)->nodeValue);
*/
/*
// 第二個單詞的name
$path='/dict/word[2]/name';
//最後一個
//$path='/dict/word[last()]/name';
$rs=$xpath->query($path);
print_r($rs->item(0)->nodeValue);
// 找name是dog的mean
$path='/dict/word[name="dog"]/mean';
$rs=$xpath->query($path);
print_r($rs->item(0)->nodeValue);
*/
//不考慮層次找節點
// 第二個eg,不在word裏,但也找得到;/x//xx前面限定祖先也可
/*$path='//eg';
$rs=$xpath->query($path);
print_r($rs->item(1)->nodeValue);
*/
// 最後詞典來一發
$path='/dict/word[name="'.$word.'"]/name';
$rs=$xpath->query($path);
if ($rs->length==0) {
echo "sorry";
exit;
}
$rs=$rs->item(0);
echo $word,'<br />';
echo '意思:',$rs->nextSibling->nodeValue,'<br />';
echo '例句:',$rs->nextSibling->nextSibling->nodeValue,'<br />';
?>
html也可以xpath
// html xpath解析
$path='html/body/div[@id="name"]';
// 屬性要加@