怎么做词典.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"]';
// 属性要加@