XML--xpath解析,自制词典

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值