php 生成bing词典能导入的xml(有道词典->bing词典)
编程以来一直用网易有道词典查单词、翻译;最近一直在看英文方面的资料,于是越来越对有道词典(划词、广告,本来想转灵格斯的,但灵格斯没有android版)不满意,一番试用后决定转bing词典,于是想把有道单词本里的单词导出
再导入bing词典,但操作后才发现有道词典导出的xml和bing词典的xml格式和节点不一样,但我执意要换为bing词典,没办法只好自己自己动手写一个php将有道的xml转为bing词典能导入的xml。
数组转xml是在网上找的,虽然简单,但功能还行。
下面是代码:
<?php
// 有道词典xml 转为bing词典可以导入的xml /**
* 把数组转化为xml,数字索引只支持一维,数字索引和字符索引不能混合
*
* @param array $array
* @return string
*/
function arrayToXML($array)
{
$str_xml = "";
if (is_array($array) && !empty($array)) {
$has_number_key = false;
foreach ($array as $key => $value) {
$parent_key = @func_get_arg(2);
if (is_integer($key)) {
$has_number_key = true;
if (is_integer($parent_key)) {
throw new Exception('数字索引只支持一维');
}
if (empty($parent_key)) {
$parent_key = $key;
} else {
if ($parent_key{strlen($parent_key) - 1} == 's') {
$parent_key = substr($parent_key, 0, strlen($parent_key) - 1);
}
}
$str_xml .= "<$parent_key>" . arrayToXML($value,$key, $parent_key) . "</$parent_key>";
} else {
if ($has_number_key) {
throw new Exception('数字索引和字符索引不能混合');
} $parent_key = $key;
$str_xml .= "<$key>" . arrayToXML($value,$key, $parent_key) . "</$key>";
}
}
} else {
$key = func_get_arg(1);
if (strpos($array, '<') !== false) {
return '<![CDATA[' . $array . ']]>';
}
if (is_array($array) && empty($array)) {
return '';
}
return $array ;
}
return $str_xml;
} $xmlObject = simplexml_load_file("youdao.xml");
$item = $xmlObject->item;
$datas = array();
for($i=0;$i<$item->count();$i++){
$trans = trim(strval($item[$i]->trans));
if(!empty($trans)){
//去除没有解释的单词、否则导入bing词典报错
$datas['Phrases'][$i]['Eng']= strval($item[$i]->word);//读取xml每项值
$datas['Phrases'][$i]['Phonetic']= strval($item[$i]->phonetic);
$datas['Phrases'][$i]['Defi']= str_replace(array(';','\n'),array(';',''),strval($item[$i]->trans)); //中文分号替换
$datas['Phrases'][$i]['Date']= date("Y-m-d H:i:s");
}
}
//构建xml
$xml = '<?xml version="1.0"?><FCVocaPhraseList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">';
$xml .= arrayToXML($datas);
$xml .= '</FCVocaPhraseList>';
header('Content-Type: text/xml');
echo $xml;
php 生成bing词典能导入的xml(有道词典->bing词典)的更多相关文章
- Excel 数据导入SQL XML 自动生成表头
去出差的时候应客户要求要要将Excel 文件内的数据批量导入到数据库中,而且有各种不同种类的表格,如果每一个表格多对应一个数据表的话, 按照正常的方法应该是创建数据表,创建数据库中映射的数据模型,然后 ...
- hibernate 联合主键生成机制(组合主键XML配置方式)
hibernate 联合主键生成机制(组合主键XML配置方式) 如果数据库中用多个字段而不仅仅是一个字段作为主键,也就是联合主键,这个时候就可以使用hibernate提供的联合主键生成策略. 具体 ...
- Android开发——自动生成Android屏幕适配的dimens.xml文件
使用dimens.xml解决屏幕适配问题是Android官方解决方案,本文主要讲述了如何自动生成Android屏幕适配的dimens.xml,减少了工作量,在维护dimens.xml文件时更加省时省力 ...
- tool - 支持TestLink 1.93,将excel格式用例转化成可以导入的xml格式
tool - 支持TestLink 1.93,将excel格式用例转化成可以导入的xml格式 https://github.com/zhangzheyuk/CaseConvert
- php如何实现读取网易有道词典输出单词的xml格式并且转化为html形式
php实现读取网易有道词典输出单词的xml格式并且转化为html形式 一.总结 一句话总结:将xml中的文件用preg_match_all读出来,然后组合成想要的数据 1.explode除了爆炸的意思 ...
- (二十二)SpringBoot之使用mybatis generator自动生成bean、mapper、mapper xml
一.下载mybatis generator插件 二.生成generatorConfig.xml new一个generatorConfig.xml 三.修改generatorConfig.xml 里面的 ...
- netbeans生成的maven工程没有web.xml文件 如何新建
使用netbeans生成的maven工程没有web.xml 需要自己新建 步骤: 下一步,完成
- 【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps
[Silverlight]Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps 上个月微软必应地图(Bing Maps) ...
- 【Silverlight】Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System)
[Silverlight]Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System) 目前包括微软必应地图在内的几乎所有在线电子地图(如:Google Maps等)都 ...
随机推荐
- PathInterpolator
PathInterpolator 在v4 support library:Revision 22.1.0的时候,Google在兼容库中增加了几个新的类,用于创建更加真实的动画效果. Added the ...
- xshell登录到CentOS7上时出现“The remote SSH server rejected X11 forwarding request.
其原因是肯能对openssh版本进行了升级. 解决方法为: yum install xorg-x11-font* xorg-x11-xauth /etc/ssh/sshd ...
- Poj2826 An Easy Problem
呵呵哒.WA了无数次,一开始想的办法最终发现都有缺陷.首先需要知道: 1)线段不相交,一定面积为0 2)有一条线段与X轴平行,面积一定为0 3)线段相交,但是能接水的三角形上面线段把下面的线段完全覆盖 ...
- linux中xargs用法
参数代换: xargs xargs 是在做什么的呢?就以字面上的意义来看, x 是加减乘除的乘号,args 则是 arguments (参数) 的意思,所以说,这个玩意儿就是在产生某个命令的参数的意思 ...
- Kali Linux 2.0安装光盘分享
Kali Linux 2.0安装光盘分享 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I ...
- AutoIt3常见问题解答
Q1 如何调试脚本? MsgBox(0,"测试",$var) ConsoleWrite("var=" & $var & @CRLF) Q2 ...
- linux暴力密码破解工具hydra安装与使用
说明:hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码.官网:http://www.thc.org/thc-hydra,可支持AFP, Cisco AAA, Cisco ...
- Shell脚本之:字符串
字符串可以用单引号,也可以用双引号,也可以不用引号. 单引号 str='this is a string' 单引号字符串的限制: 1.单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的: 2 ...
- apue学习笔记(第十六章 网络IPC:套接字)
本章将考察不同计算机(通过网络连接)上的进程相互通信的机制:网络进程间通信. 套接字描述符 正如使用文件描述符访问文件,应用程序用套接字描述符访问套接字. 许多处理文件描述符函数(如read和writ ...
- iOS UITableViewDelegate && UITableViewDataSource 执行顺序
#pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableV ...