?
“设置”------>“语音输入与输出”------> “文字转语音设置 ”里面选项选择的默认引擎。
????????? 假若勾选了“总是使用我的设置”,系统就会以这里的设置为最高优先级,代码里面的设置无效。
这里可以查看是否有发声的语音包。
Android学习笔记(16)————Android的XML解析之pull方式
?
/********************************************************************************************
?* author:[email protected]?[email protected]?????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ??
?* E-mail:[email protected] ??? ??? ??? ??? ??? ??? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?
?*?http://blog.csdn.net/conowen?? ??? ??? ??? ??? ??? ??? ??? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。 ? ???
?********************************************************************************************/
1、XML文档简单解说:
首先先看一个XML文档的截取部分:
?
- <wordbook>??
- ??
- <item>????<word>cupboard</word>??
- ????<trans><![CDATA[n.?食橱;碗柜]]></trans>??
- ????<phonetic><![CDATA[['k?b?d]]]></phonetic>??
- ????<tags>CET4-EASY</tags>??
- </item>??
- ??
- <item>????<word>a</word>??
- ????<trans><![CDATA[art.?一;任一;每一??
- ?a?:?朱??
- FORM?A:?普惠证|普惠制产地证|惠制原产地证明书??
- many?a:?许多的|一个又一个的|很多]]></trans>??
- ????<phonetic><![CDATA[[ei]]]></phonetic>??
- ????<tags>CET4-EASY</tags>??
- </item>??
- ??
- <item>????<word>abandon</word>??
- ????<trans><![CDATA[n.?狂热;放任??
- vt.?遗弃;放弃??
- abandon:?放弃|确认期权失效|委付??
- Call?abandon:?呼叫中途挂机??
- abandon??v:?放弃]]></trans>??
- ????<phonetic><![CDATA[[?'b?nd?n]]]></phonetic>??
- ????<tags>CET4-EASY</tags>??
- </item>??
- ??
- <item>????<word>ability</word>??
- ????<trans><![CDATA[n.?能力,能耐;才能??
- Ability:?力|能力|本领??
- encapsulating?ability:?包被抑制性??
- limited?ability:?有限能力]]></trans>??
- ????<phonetic><![CDATA[[?'biliti]]]></phonetic>??
- ????<tags>CET4-EASY</tags>??
- </item>??
- ??
- <pre?name="code"?class="html"></wordbook>??
?
模型:
- <?文档标签>??
- <子标签><标签A>str1<标签A/><标签B>str2<标签B/><子标签/>??
- ??
- <子标签><标签A>str1<标签A/><标签B>str2<标签B/><子标签/>??
- ??
- <子标签><标签A>str1<标签A/><标签B>str2<标签B/><子标签/>??
- <文档标签/>??
?
?
????? 在上面的 XML 中,文档标签是 <wordbook>。文档中的其他的所有子标签都被包含在文档<bookstore> 中。文档标签 <wordbook> 有四个 <item>子标签。每一个 <item>子标签有四个节点:<word>, <trans>, <phonetic> 以及<tags>节点,其中每个节点都包含这个节点的内容。
注意:标签里面的str内容,如果是换行的,解析xml文件之后,打印出来的也是换行的
?
XML文件下载地址:http://ishare.iask.sina.com.cn/f/20283647.html
?
2、Android平台的XML解析方案:
?
??????????????? 在Android平台上可以使用以下三种XML解析方式:
2.1、Simple?API?for XML(SAX)
?
????????? SAX解析方式是基于事件驱动的。当读到文档标签的开始或者结束时,会有相应的事件,当读到一个子节点的开始标签或者结束标签时也会有相应的事件。当读到某一个子节点的其中一个节点时也会有相应的事件。由于Android平台的事件驱动是基于回调函数的,也就是说遇到上述事件时,会实现一个回调函数的接口。
2.2、Document Object Model(DOM)
?
????????? DOM解析XML时,会把整个XML文档视作一个节点树,直接把整个节点树读取到内存里面,再进行解析,这样一来优点就是操作简单方便,但是缺点就是对于大体积的XML文档,解析起来机会很慢,而且很耗费资源。
?
2.3、Android附带的pull解析器
?
? Pull方基本与SAX一样
?
简而言之,对于大体积的XML文件,最好选用SAX或者Pull方式解析,对于小体积的XML文档,可以选择DOM解析。
?
?
3、Pull解析方式详解
?
注:以下所说的标签包括子标签和子标签里面的所有标签
?
Pull解析的相关方法:
XmlResourceParser xrp;//定义一个XML资源解析器
XmlResourceParser.START_DOCUMENT 遇到文档标签的开始
XmlResourceParser.END_DOCUMENT 遇到文档标签的结束
?
?
xrp.nextTag();继续读取下一个标签,和next()基本 一样
?
?
下面写一个解析"英语词典.XML",来实现一个android 字典程序。详细解说可以看注释。
?
效果图:
?
?
- /*author:conowen?
- ?*?date:2012.4.1?
- ?*/??
- package?com.conowen.Dictionary;??
- ??
- import?android.app.Activity;??
- import?android.content.res.XmlResourceParser;??
- import?android.os.Bundle;??
- import?android.view.View;??
- import?android.view.View.OnClickListener;??
- import?android.widget.Button;??
- import?android.widget.EditText;??
- import?android.widget.TextView;??
- ??
- public?class?DictionaryActivity?extends?Activity?{??
- ????String?input?=?null;??
- ????String?match?=?null;??
- ????EditText?et?=?null;??
- ????Button?search?=?null;??
- ????Button?del?=?null;??
- ????TextView?display?=?null;??
- ??
- ????/**?Called?when?the?activity?is?first?created.?*/??
- ????@Override??
- ????public?void?onCreate(Bundle?savedInstanceState)?{??
- ????????super.onCreate(savedInstanceState);??
- ????????setContentView(R.layout.main);??
- ????????et?=?(EditText)?findViewById(R.id.et);??
- ????????search?=?(Button)?findViewById(R.id.search);??
- ????????del?=?(Button)?findViewById(R.id.del);??
- ????????display?=?(TextView)?findViewById(R.id.tv);??
- ??
- ????????search.setOnClickListener(new?OnClickListener()?{??
- ??
- ????????????@Override??
- ????????????public?void?onClick(View?v)?{??
- ????????????????//?TODO?Auto-generated?method?stub??
- ????????????????input?=?et.getText().toString();??
- ????????????????//?现在工程的res目录下面新建一个xml文件夹,把cet4.xml拖进去??
- ????????????????XmlResourceParser?xrp?=?getResources().getXml(R.xml.cet4);//?定义一个XML资源解析器??
- ??
- ????????????????try?{??
- ????????????????????StringBuilder?strbuilder?=?new?StringBuilder("");??
- ????????????????????while?(xrp.getEventType()?!=?XmlResourceParser.END_DOCUMENT)?{//?当还没到XML文档结束时??
- ????????????????????????if?(xrp.getEventType()?==?XmlResourceParser.START_TAG)?{//?当遇到开始标签时,包括子标签和子标签里面的所有标签??
- ????????????????????????????String?tagname?=?xrp.getName();//?获取标签的名字??
- ??
- ????????????????????????????if?(tagname.equals("word"))?{//?取出单词??
- ????????????????????????????????match?=?xrp.nextText();//?读取标签里面内容,也就是这个单词??
- ??
- ????????????????????????????????if?(match.equals(input))?{//?如果取出来的这个单词和输入的单词相等??
- ????????????????????????????????????xrp.next();//?读取这个下一个标签,也就是<trans>翻译??
- ????????????????????????????????????strbuilder.append(xrp.nextText());//?取出翻译??
- ????????????????????????????????????display.setText(strbuilder);//?显示翻译??
- ????????????????????????????????????????????????????????????????????????break;??
- ????????????????????????????????}??
- ??
- ????????????????????????????}??
- ??
- ????????????????????????}??
- ????????????????????????xrp.next();//?读取下一个标签??
- ??
- ????????????????????}??
- ??
- ????????????????}?catch?(Exception?e)?{??
- ????????????????????//?TODO:?handle?exception??
- ????????????????}??
- ??
- ????????????}??
- ????????});??
- ????????del.setOnClickListener(new?OnClickListener()?{??
- ??
- ????????????@Override??
- ????????????public?void?onClick(View?v)?{??
- ????????????????//?TODO?Auto-generated?method?stub??
- ????????????????display.setText("");??
- ????????????????et.setText("");??
- ??
- ????????????}??
- ????????});??
- ??
- ????}??
- } ?
?