编程以来一直用网易有道词典查单词、翻译;最近一直在看英文方面的资料,于是越来越对有道词典(划词、广告,本来想转灵格斯的,但灵格斯没有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词典)的更多相关文章

  1. Excel 数据导入SQL XML 自动生成表头

    去出差的时候应客户要求要要将Excel 文件内的数据批量导入到数据库中,而且有各种不同种类的表格,如果每一个表格多对应一个数据表的话, 按照正常的方法应该是创建数据表,创建数据库中映射的数据模型,然后 ...

  2. hibernate 联合主键生成机制(组合主键XML配置方式)

    hibernate 联合主键生成机制(组合主键XML配置方式)   如果数据库中用多个字段而不仅仅是一个字段作为主键,也就是联合主键,这个时候就可以使用hibernate提供的联合主键生成策略. 具体 ...

  3. Android开发——自动生成Android屏幕适配的dimens.xml文件

    使用dimens.xml解决屏幕适配问题是Android官方解决方案,本文主要讲述了如何自动生成Android屏幕适配的dimens.xml,减少了工作量,在维护dimens.xml文件时更加省时省力 ...

  4. tool - 支持TestLink 1.93,将excel格式用例转化成可以导入的xml格式

     tool - 支持TestLink 1.93,将excel格式用例转化成可以导入的xml格式  https://github.com/zhangzheyuk/CaseConvert

  5. php如何实现读取网易有道词典输出单词的xml格式并且转化为html形式

    php实现读取网易有道词典输出单词的xml格式并且转化为html形式 一.总结 一句话总结:将xml中的文件用preg_match_all读出来,然后组合成想要的数据 1.explode除了爆炸的意思 ...

  6. (二十二)SpringBoot之使用mybatis generator自动生成bean、mapper、mapper xml

    一.下载mybatis generator插件 二.生成generatorConfig.xml new一个generatorConfig.xml 三.修改generatorConfig.xml 里面的 ...

  7. netbeans生成的maven工程没有web.xml文件 如何新建

    使用netbeans生成的maven工程没有web.xml 需要自己新建 步骤: 下一步,完成

  8. 【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps

    [Silverlight]Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps 上个月微软必应地图(Bing Maps) ...

  9. 【Silverlight】Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System)

    [Silverlight]Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System) 目前包括微软必应地图在内的几乎所有在线电子地图(如:Google Maps等)都 ...

随机推荐

  1. cocos2d-x 学习记录

    不积跬步,无以至千里.不积小流,无以成江海. 開始学习cocos2d-x ,路漫漫其修远兮.加油!

  2. 使用Jsoup解决网页中图片链接问题

    在做Facebook和WhatsApp分享的时候,分享出去的谷歌短链,Facebook获取不到大图,和竞品展示的不一样,WhatsApp分享出去的短链没有图片和描述. WhatsApp: 分析竞品UC ...

  3. 2016.6.21 将Eclipse中项目部署到tomcat下

    新建的web项目,各种都配置好,选择run on server之后,发现运行失败,并不能访问需要的网址.而脱离eclipse,将生成的war文件直接放到tomcat的webapp下时,可以正常访问.所 ...

  4. 115. distinct subsequence leetcode python

    Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...

  5. servlet实现文件下载所需步骤及说明

      servlet实现文件下载所需步骤及说明 CreateTime--2017年9月1日15:46:22 Author:Marydon 参考链接:http://blog.sina.com.cn/s/b ...

  6. Ubuntu搭建Http服务器

    一句命令: sudo apt-get install apache2 产生的启动和停止文件是:/etc/init.d/apache2 启动:sudo apache2ctl -k start 停止:su ...

  7. jquery实现图片的依次加载图片

    css代码: ul#portfolio{margin:0;padding:0;} ul#portfolio li{float:left;margin:0 5px 0 0;width:250px;hei ...

  8. VueJS表单控件操作

    概念说明 v-model指令:在表单控件元素上创建双向数据绑定.v-model 会根据控件类型自动选取正确的方法来更新元素. 输入框 实例中演示了 input 和 textarea 元素中使用 v-m ...

  9. shell查看系统基本信息脚本

    #!/bin/bash echo "IP:" ifconfig |grep "inet addr"|grep -v 127.0.0.1|awk '{print ...

  10. 如何修改mindmanager默认字体为微软雅黑

    mindmanager默认的字体是Verdana的,如何改为大家喜欢的其他字体呢?比如微软雅黑. 其实很简单,以我使用的是汉化版Mindmanager2012为例,只需要下面几个步骤   第1步:找到 ...