XML的解析DOM,基于android的天气预报app开发

这篇博客介绍了在Android环境下使用DOM解析XML的方法,包括解析XML的代码示例和处理XML数据的过程。博客强调了在编程学习过程中坚持的重要性,并提供了Android开发的相关资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. properties.setProperty(OutputKeys.OMIT_XML_DECLARATION, “yes”);

  2. TransformerFactory transformerFactory = TransformerFactory.newInstance();

  3. Transformer transformer = transformerFactory.newTransformer();

  4. transformer.setOutputProperties(properties);

  5. DOMSource domSource = new DOMSource(doc.getDocumentElement());

  6. OutputStream output = new ByteArrayOutputStream();

  7. StreamResult result = new StreamResult(output);

  8. transformer.transform(domSource, result);

  9. xmlWriter = output.toString();

  10. } catch (ParserConfigurationException e) {      // factory.newDocumentBuilder

  11. e.printStackTrace();

  12. } catch (DOMException e) {                      // doc.createElement

  13. e.printStackTrace();

  14. } catch (TransformerFactoryConfigurationError e) {      // TransformerFactory.newInstance

  15. e.printStackTrace();

  16. } catch (TransformerConfigurationException e) {     // transformerFactory.newTransformer

  17. e.printStackTrace();

  18. } catch (TransformerException e) {              // transformer.transform

  19. e.printStackTrace();

  20. } catch (Exception e) {

  21. e.printStackTrace();

  22. }

  23. savedXML(fileName, xmlWriter.toString());

  24. return xmlWriter.toString();

  25. }

运行结果:

3、Dom 解析 XML

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

Code

[java]  view plain copy print ?

  1. /** Dom方式,解析 XML  */

  2. public String domResolveXML() {

  3. StringWriter xmlWriter = new StringWriter();

  4. InputStream is= readXML(fileName);

  5. try {

  6. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

  7. DocumentBuilder builder = factory.newDocumentBuilder();

  8. Document doc = builder.parse(is);

  9. doc.getDocumentElement().normalize();

  10. NodeList nlRoot = doc.getElementsByTagName(“root”);

  11. Element eleRoot = (Element)nlRoot.item(0);

  12. String attrAuthor = eleRoot.getAttribute(“author”);

  13. String attrDate = eleRoot.getAttribute(“date”);

  14. xmlWriter.append(“root”).append("\t\t");

  15. xmlWriter.append(attrAuthor).append("\t");

  16. xmlWriter.append(attrDate).append("\n");

  17. NodeList nlPerson = eleRoot.getElementsByTagName(“person”);

  18. int personsLen = nlPerson.getLength();

  19. Person []persons = new Person[personsLen];

  20. for(int i=0; i<personsLen; i++) {

  21. Element elePerson = (Element) nlPerson.item(i);     // person节点

  22. Person person = new Person();                       // 创建Person对象

  23. NodeList nlId = elePerson.getElementsByTagName(“id”);

  24. Element eleId = (Element)nlId.item(0);

  25. String id = eleId.getChildNodes().item(0).getNodeValue();

  26. person.setId(Integer.parseInt(id));

  27. NodeList nlName = elePerson.getElementsByTagName(“name”);

  28. Element eleName = (Element)nlName.item(0);

  29. String name = eleName.getChildNodes().item(0).getNodeValue();

  30. person.setName(name);

  31. NodeList nlBlog = elePerson.getElementsByTagName(“blog”);

  32. Element eleBlog = (Element)nlBlog.item(0);

  33. String blog = eleBlog.getChildNodes().item(0).getNodeValue();

  34. person.setBlog(blog);

  35. xmlWriter.append(person.toString()).append("\n");

  36. persons[i] = person;

  37. }

  38. } catch (ParserConfigurationException e) {      // factory.newDocumentBuilder

  39. e.printStackTrace();

  40. } catch (SAXException e) {      // builder.parse

  41. e.printStackTrace();

  42. } catch (IOException e) {       // builder.parse

  43. e.printStackTrace();

  44. } catch (Exception e) {

  45. e.printStackTrace();

  46. }

  47. return xmlWriter.toString();

  48. }

运行结果:

4、Person类

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

[java]  view plain copy print ?

  1. public class Person {

  2. private int id;

  3. private String name;

  4. private String blog;

  5. public Person() {

  6. this.id = -1;

  7. this.name = “”;

  8. this.blog = “”;

  9. }

  10. public Person(int id, String name, String blog) {

  11. this.id = id;

  12. this.name = name;

  13. this.blog = blog;

  14. }

  15. public Person(Person person) {

  16. this.id = person.id;

  17. this.name = person.name;

  18. this.blog = person.blog;

  19. }

  20. public Person getPerson(){

  21. return this;

  22. }

  23. public void setId(int id) {

  24. this.id = id;

  25. }

  26. public int getId(){

  27. return this.id;

  28. }

  29. public void setName(String name) {

  30. this.name = name;

  31. }

  32. public String getName() {

  33. return this.name;

  34. }

  35. public void setBlog(String blog) {

  36. this.blog = blog;

  37. }

最后

**一个零基础的新人,我认为坚持是最最重要的。**我的很多朋友都找我来学习过,我也很用心的教他们,可是不到一个月就坚持不下来了。我认为他们坚持不下来有两点主要原因:

他们打算入行不是因为兴趣,而是因为所谓的IT行业工资高,或者说完全对未来没有任何规划。

刚开始学的时候确实很枯燥,这确实对你是个考验,所以说坚持下来也很不容易,但是如果你有兴趣就不会认为这是累,不会认为这很枯燥,总之还是贵在坚持。

技术提升遇到瓶颈了?缺高级Android进阶视频学习提升自己吗?还有大量大厂面试题为你面试做准备!

点击:Android 学习,面试文档,视频收集大整理

来获取学习资料提升自己去挑战一下BAT面试难关吧

对于很多Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些知识图谱希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

不论遇到什么困难,都不应该成为我们放弃的理由!

如果有什么疑问的可以直接私我,我尽自己最大力量帮助你!

E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)

来获取学习资料提升自己去挑战一下BAT面试难关吧

[外链图片转存中…(img-PegKlFNN-1645006837564)]

对于很多Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些知识图谱希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

不论遇到什么困难,都不应该成为我们放弃的理由!

如果有什么疑问的可以直接私我,我尽自己最大力量帮助你!

最后祝各位新人都能坚持下来,学有所成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值