XML解析之三 Dom解析器
来源:互联网 发布:电影数据 编辑:程序博客网 时间:2024/05/17 21:48
接上一章,这一章我们介绍Dom解析,因为Dom是J2EE中用得比较多的解析器,这里解析方法跟J2EE方法是一样的,具体的样式跟以下这篇文章中的样式是一样的
view plaincopy to clipboardprint?
- <?xml
version="1.0" encoding="UTF-8"?> - <persons>
-
id = "1"> -
-
-
-
-
-
-
id = "2"> -
-
-
</tool> -
-
-
-
id = "3"> -
-
-
-
-
-
- </persons>
其他数据或样式请看以下教程
Android[中级教程]第五章 XML解析之PULL解析器
view plaincopy to clipboardprint?
- import
java.io.InputStream; - import
java.util.ArrayList; - import
java.util.List; -
- import
javax.xml.parsers.DocumentBuilder; - import
javax.xml.parsers.DocumentBuilderFactory; -
- import
org.w3c.dom.Document; - import
org.w3c.dom.Element; - import
org.w3c.dom.Node; - import
org.w3c.dom.NodeList; -
- public
class DomHandler - {
-
InputStream input; -
List<Person> persons; -
Person person; -
-
DomHandler() -
{ -
} -
-
DomHandler(InputStream input) -
{ -
= input; -
} -
-
void setInput(InputStream input) -
{ -
= input; -
} -
-
List<Person> getPersons(){ -
-
persons = ArrayList<Person>(); -
-
{ -
-
DocumentBuilder builder =DocumentBuilderFactory.newInstance().newDocumentBuilder(); -
Document document = builder.parse(input); -
Element element = document.getDocumentElement(); -
-
-
NodeList personNodes =element.getElementsByTagName_r( -
-
length = personNodes.getLength(); -
i 0;= i < length; i++){ -
-
Element personElement = (Element)personNodes.item(i); -
person = Person(); -
id="1">中的id属性值 -
person.setId(personElement.getAttribute( -
-
-
NodeList childnodes = personElement.getChildNodes(); -
len = childnodes.getLength(); -
j 0= ; j < len ; j++){ -
-
== Node.ELEMENT_NODE){ -
-
String nodeName = childnodes.item(j).getNodeName(); -
-
String nodeValue = childnodes.item(j).getFirstChild().getNodeValue(); -
-
person.setStatus(nodeValue); -
} -
-
person.setName(nodeValue); -
} -
-
person.setTool(nodeValue); -
} -
-
person.setNumber(nodeValue); -
} -
} -
} for j -
persons.add(person); -
} for i -
-
persons; -
-
-
} (Exception e) -
{ -
e.printStackTrace(); -
} -
-
-
null; -
} - }
接着就是Activity的代码了:
view plaincopy to clipboardprint?
- import
java.io.File; - import
java.io.FileInputStream; - import
java.util.ArrayList; - import
java.util.HashMap; - import
java.util.List; - import
java.util.Map; -
- import
android.app.Activity; - import
android.os.Bundle; - import
android.os.Environment; - import
android.widget.ListView; - import
android.widget.SimpleAdapter; -
- public
class PullActivity extendsActivity - {
-
-
ListView listView; -
SimpleAdapter adapter; -
-
-
void onCreate(Bundle savedInstanceState) -
{ -
TODO Auto-generated method stub -
-
setContentView(R.layout.xml_handler); -
-
listView = (ListView)findViewById(R.id.xml_list); -
-
{ -
-
getAdapter(); -
-
} (Exception e) -
{ -
e.printStackTrace(); -
} -
listView.setAdapter(adapter); -
} -
-
-
void getAdapter() throwsException -
{ -
List<Map<String, String>> lists = ArrayList<Map<String, String>>(); -
-
-
File SD_Files = Environment.getExternalStorageDirect ory(); -
String file_path = SD_Files.getName() + File.separator + -
- //
FileInputStream input = new FileInputStream(new File(file_path)); - //
PullHandler pullHandler = new PullHandler(input); - //
List<Person> persons = pullHandler.getPersons(); -
- //
FileInputStream fis = new FileInputStream(new File(file_path)); - //
SAXParser parser = SAXParserFactory.newInstance().newSAXParser(); - //
SaxHandler saxHandler = new SaxHandler(); - //
parser.parse(fis, saxHandler); - //
List<Person> persons = saxHandler.getPersons(); -
-
FileInputStream fis = FileInputStream( newFile(file_path)); -
DomHandler domHandler = DomHandler(fis); -
List<Person> persons = domHandler.getPersons(); -
-
String>>中,因为SimpleAdapter要用这个类型的数据进行适配 -
Map<String, String> map; -
p : persons){ -
map = HashMap<String, String>(); -
-
map.put( p.getId()); -
map.put( p.getStatus()); -
map.put( p.getName()); -
map.put( p.getTool()); -
map.put( p.getNumber()); -
-
lists.add(map); -
} -
-
String>中的key -
String[] from = { "status", "name", "tool", "number"}; -
-
to = {R.id.item_id, R.id.item_status, R.id.item_name, R.id.item_tool, R.id.item_number}; -
-
adapter = SimpleAdapter( this,lists, R.layout.handler_list_item, from, to); -
-
} - }
其实Dom在Android中还是用的比较少的,主要是考虑性能的问题,毕竟手机不比服务器或电脑啊。
下一章,我们将会介绍Json的解析方法,希望各位同学们认真学习。
- XML解析之三 Dom解析器
- XML解析器之DOM
- XML解析之DOM解析
- XML解析之DOM解析
- xml解析之----DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- xml解析之dom解析
- 解析xml之--DOM
- xml解析之Dom
- XML解析之 DOM
- 一周小结(你不要小看业务)
- 互联网竞争,本质是渠道之争(从360、小米手机到淘宝...)
- 不要浮躁,从现在做起
- SQL SERVER 日期函数及其默认设置总结
- 练习31
- XML解析之三 Dom解析器
- 飞鸽传书,去看了下WEBBROWSER的资料
- Json数据的处理
- 认识理解Java中native方法
- 通过ie方式打印当前页面
- 在桌面红旗6上编写并运行第一个驱动设备程序
- 字符串结束符'\0'
- mySQL
- 深入研究java对String字符串对象的创建以及管理