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等)都 ...
随机推荐
- 双网卡环境导致Oracle连接异常
现在就是流行向最高水平看齐,这次项目的部署,好好的SQL Server扔了(有正版授权的企业版,神啊...),逢人就夸:“俺们那上的可是最顶级的Oracle Database System!”.看了看 ...
- django博客开发
找一文件夹作为项目文件夹1 django-admin.py startproject mysite建立工程2 cd mysite python manage.py startapp blog 建立第一 ...
- 对ps4 cmask fmask的理解
这俩都是绑在corlor target上8x8的格子 cmask 做fastclear 这个比较好理解,8x8来表示这个格子是否clear fmask msaa用 provided to suppor ...
- 126. Word Ladder II(hard)
126. Word Ladder II 题目 Given two words (beginWord and endWord), and a dictionary's word list, find a ...
- 转: 微信开源C/C++ RPC框架PhxRPC
转自: http://mp.weixin.qq.com/s?__biz=MzI4NDMyNTU2Mw==&mid=2247483734&idx=1&sn=da364812eca ...
- Vue避免 v-if 和 v-for 用在一起
永远不要把 v-if 和 v-for 同时用在同一个元素上. 一般我们在两种常见的情况下会倾向于这样做: 为了过滤一个列表中的项目 (比如 v-for="user in users" ...
- MySQL之慢查询-删除慢查询日志
一.环境 OS:CentOS release 5.8(64位) DB:MySQL5.5.17 二.操作 直接通过命令 rm -f 删除了慢查询日志 三.出现故障 慢查询日志没有自己主 ...
- DevOps 初学者的入门指南
原文地址:http://blog.csdn.net/FIRim/article/details/52681704 当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及 ...
- FZU 2124 FOJ 2124 吃豆人【BFS】
Problem 2124 吃豆人 Accept: 134 Submit: 575 Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- win10系统架构调用
操作系统模型 操作系统有两种模式: 用户模式 内核模式 当用户模式调用系统服务时,CPU执行一个特殊的指令以切换到内核模式(Ring0),当系统服务调用完成时,操作系统切换回用户模式(Ring3). ...