Android创建与解析XML(二)――详解Dom方式

Android创建与解析XML(二)――详解Dom方式,第1张

概述1.Dom概述Dom方式创建XML,应用了标准xml构造器javax.xml.parsers.DocumentBuilder来创建XML文档,需要导入以下内容

1. Dom概述

Dom方式创建XML,应用了标准xml构造器 javax.xml.parsers.documentBuilder 来创建 XML 文档,需要导入以下内容

javax.xml.parsersjavax.xml.parsers.documentBuilder javax.xml.parsers.documentBuilderFactory javax.xml.parsers.ParserConfigurationException;javax.xml.transformjavax.xml.transform.transformerFactory javax.xml.transform.transformer javax.xml.transform.dom.DOMSource javax.xml.transform.stream.StreamResult javax.xml.transform.OutputKeys;javax.xml.transform.transformerFactoryConfigurationError;javax.xml.transform.transformerConfigurationException;javax.xml.transform.transformerException;org.w3c.dom org.w3c.dom.document;org.w3c.dom.Element;org.w3c.dom.Node;org.w3c.dom.DOMException;org.w3c.dom.NodeList;org.xml.sax.SAXException;

创建和解析xml的效果图:

2、Dom 创建 XML

Dom,借助 javax.xml.parsers.documentBuilder,可以创建 org.w3c.dom.document 对象。

使用来自 documentBuilderFactory 的 documentBuilder 对象在 AndroID 设备上创建与解析 XML 文档。您将使用 XML pull 解析器的扩展来解析 XML 文档。

/** Dom方式,创建 XML */ public String domCreateXML() {   String xmlWriter = null;      Person []persons = new Person[3];    // 创建节点Person对象   persons[0] = new Person(1,"sunboy_2050","http://www.jb51.net/");   persons[1] = new Person(2,"baIDu","http://wwwbaIDucom");   persons[2] = new Person(3,"Google","http://wwwGooglecom");      try {     documentBuilderFactory factory = documentBuilderFactorynewInstance();     documentBuilder builder = factorynewdocumentBuilder();     document doc = buildernewdocument();          Element eleRoot = doccreateElement("root");     eleRootsetAttribute("author","homer");     eleRootsetAttribute("date","2012-04-26");     docappendChild(eleRoot);          int personsLen = personslength;     for(int i=0; i<personsLen; i++) {       Element elePerson = doccreateElement("person");       eleRootappendChild(elePerson);              Element eleID = doccreateElement("ID");       Node nodeID = doccreateTextNode(persons[i]getID() + "");       eleIDappendChild(nodeID);       elePersonappendChild(eleID);        Element elename = doccreateElement("name");       Node nodename = doccreateTextNode(persons[i]getname());       elenameappendChild(nodename);       elePersonappendChild(elename);        Element eleBlog = doccreateElement("blog");       Node nodeBlog = doccreateTextNode(persons[i]getBlog());       eleBlogappendChild(nodeBlog);       elePersonappendChild(eleBlog);     }               PropertIEs propertIEs = new PropertIEs();     propertIEssetProperty(OutputKeysINDENT,"yes");     propertIEssetProperty(OutputKeysMEDIA_TYPE,"xml");     propertIEssetProperty(OutputKeysveRSION,"0");     propertIEssetProperty(OutputKeysENCoding,"utf-8");     propertIEssetProperty(OutputKeysMETHOD,"xml");     propertIEssetProperty(OutputKeysOMIT_XML_DECLaraTION,"yes");          transformerFactory transformerFactory = transformerFactorynewInstance();     transformer transformer = transformerFactorynewtransformer();     transformersetoutputPropertIEs(propertIEs);          DOMSource domSource = new DOMSource(docgetdocumentElement());     OutputStream output = new ByteArrayOutputStream();     StreamResult result = new StreamResult(output);     transformertransform(domSource,result);          xmlWriter = outputtoString();        } catch (ParserConfigurationException e) {   // factorynewdocumentBuilder     eprintstacktrace();   } catch (DOMException e) {           // doccreateElement     eprintstacktrace();   } catch (transformerFactoryConfigurationError e) {   // transformerFactorynewInstance     eprintstacktrace();   } catch (transformerConfigurationException e) {   // transformerFactorynewtransformer     eprintstacktrace();   } catch (transformerException e) {       // transformertransform     eprintstacktrace();   } catch (Exception e) {     eprintstacktrace();   }      savedXML(filename,xmlWritertoString());      return xmlWritertoString(); } 

运行结果:


3、Dom 解析 XML

Dom方式,解析XML是创建XML的逆过程,主要用到了builder.parse(is)进行解析,然后通过Tag、NodeList、Element、childNotes等得到Element和Node属性或值。

/** Dom方式,解析 XML */ public String domresolveXML() {   StringWriter xmlWriter = new StringWriter();      inputStream is= readxml(filename);   try {     documentBuilderFactory factory = documentBuilderFactorynewInstance();     documentBuilder builder = factorynewdocumentBuilder();     document doc = builderparse(is);      docgetdocumentElement()normalize();     NodeList nlRoot = docgetElementsByTagname("root");     Element eleRoot = (Element)nlRootitem(0);     String attrAuthor = eleRootgetAttribute("author");     String attrDate = eleRootgetAttribute("date");     xmlWriterappend("root")append("\t\t");     xmlWriterappend(attrAuthor)append("\t");     xmlWriterappend(attrDate)append("\n");          NodeList nlPerson = eleRootgetElementsByTagname("person");     int personsLen = nlPersongetLength();     Person []persons = new Person[personsLen];     for(int i=0; i<personsLen; i++) {       Element elePerson = (Element) nlPersonitem(i);   // person节点       Person person = new Person();            // 创建Person对象              NodeList nlID = elePersongetElementsByTagname("ID");       Element eleID = (Element)nlIDitem(0);       String ID = eleIDgetChildNodes()item(0)getNodeValue();       personsetID(IntegerparseInt(ID));              NodeList nlname = elePersongetElementsByTagname("name");       Element elename = (Element)nlnameitem(0);       String name = elenamegetChildNodes()item(0)getNodeValue();       personsetname(name);              NodeList nlBlog = elePersongetElementsByTagname("blog");       Element eleBlog = (Element)nlBlogitem(0);       String blog = eleBloggetChildNodes()item(0)getNodeValue();       personsetBlog(blog);              xmlWriterappend(persontoString())append("\n");       persons[i] = person;     }        } catch (ParserConfigurationException e) {   // factorynewdocumentBuilder     eprintstacktrace();   } catch (SAXException e) {   // builderparse     eprintstacktrace();   } catch (IOException e) {    // builderparse     eprintstacktrace();   } catch (Exception e) {     eprintstacktrace();   }      return xmlWritertoString(); } 

运行结果:


4、Person类

Person类,是创建XML的单位实例,基于Java面向对象定义的一个类

public class Person {   private int ID;   private String name;   private String blog;      public Person() {     thisID = -1;     thisname = "";     thisblog = "";   }    public Person(int ID,String name,String blog) {     thisID = ID;     thisname = name;     thisblog = blog;   }      public Person(Person person) {     thisID = personID;     thisname = personname;     thisblog = personblog;   }    public Person getPerson(){     return this;   }      public voID setID(int ID) {     thisID = ID;   }      public int getID(){     return thisID;   }      public voID setname(String name) {     thisname = name;   }    public String getname() {     return thisname;   }    public voID setBlog(String blog) {     thisblog = blog;   }    public String getBlog() {     return thisblog;   }    public String toString() {     return "Person \nID = " + ID + "\nname = " + name + "\nblog = " + blog + "\n";   } } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android创建与解析XML(二)――详解Dom方式全部内容,希望文章能够帮你解决Android创建与解析XML(二)――详解Dom方式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1147567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存