DOM解析
DOM解析
DOM ——Document Object Model(文档对象模型)
——提供一套用于解析XML文档的API
——按照XML定义的标记块来创建对象实例并设置相应的属性
——可以按照标记块的层次结构来创建对象的层次结构
DOM解析相关类/接口
解析XML——包:javax.xml.parsers / org.w3c.dom
- DocumentBuilderFactory类DOM文档解析器的工厂类,用于创建解析器对象
- DocumentBuilder类DOM文档解析类,用于解析XML文档
- Document:文档实体接口
- Element类:代表文档的一个元素
- Node类:代表DOM模型中的实体的主要数据模型,既可是元素也可以是属性项
- NodeList类:节点列表
- DocumentBuilderFactory.newInstance();
DOM解析常用方法
- DocumentBuilderFactory.newInstance();
作用:创建文档模型工厂对象
- DocumentBuilderFactory. newDocumentBuilder();
作用: 创建解析器对象
- DocumentBuilder.parse(InputStream is);
作用: 将输入流代表的XML文档加载到内存中
- DocumentBuilder.getDocumentElement();
作用: 获得根元素
- ElementgetChildNodes();
作用: 获得当前元素的所有子节点元素。返回一个NodeList类型的对象
- NodeList.item(i);
作用: 返回节点列表中索引值为i的列表项
- Node.getNodeType();
作用: 获得节点类型
- ElementgetAttribute(String s);
作用: 获得指定属性的属性名称
- ElementgetFristChild().getNodeValue();
作用: 获得当前属性的数据
DOM解析代码
xml文件
java代码
1 protected void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 try { 4 //获得解析xml的对象 5 DocumentBuilder db=DocumentBuilderFactory.newInstance ().newDocumentBuilder (); 6 InputStream is=getResources().openRawResource(R.raw.xml文件名); //读取资源文件 7 Document doc=db.parse(is); //将整个XML文档加载到内存 8 NodeList list=doc.getElementsByTagName("book"); //获取所有为book的节点 9 for (int i=0;i<list.getLength();i++){ 10 Element e=(Element) list. item(i); 11 Node name=e.getElementsByTagName("name").item(0); 12 //获得当前属性的数据 13 String value=name.getFirstChild().getNodeValue(); 14 Toast.makeText(类名.this, value, 1000).show(); 15 } 16 } catch (ParserConfigurationException e) { 17 e.printStackTrace(); 18 } catch (SAXException e) { 19 e.printStackTrace(); 20 } catch (IOException e) { 21 e.printStackTrace(); 22 } 23 }