XML解析---DOM

矫情吗;* 2022-08-05 00:41 338阅读 0赞

设置DOM的一般步骤

  1. 创建目标类;
  2. 创建ArrayList,用来存放解析结果;
  3. 通过DocumentBuilderFactory.newInstance() 获取factory;
  4. 通过factoty获得buider实例;
  5. 取得Dom builder.parse(InputStream);
  6. 寻找根节点 dom.getDocumentElement();
  7. 通过根节点获取所有的item; root.getElementByTagName();
  8. 遍历所有的item;
  9. 可以获得attribute;
  10. 这时可以获取没个item下的子节点;
  11. 遍历每个子节点;
  12. 判断类型
  13. 根据childNode.getNodeName() 将对应的值 childNode.getFirstChild().getNodeValue() 存入目标类的对象中
  14. 添加对象至Arraylist中;

  1. package com.example.xmltest;
  2. import java.io.InputStream;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import javax.xml.parsers.DocumentBuilder;
  6. import javax.xml.parsers.DocumentBuilderFactory;
  7. import org.w3c.dom.Document;
  8. import org.w3c.dom.Element;
  9. import org.w3c.dom.Node;
  10. import org.w3c.dom.NodeList;
  11. import android.os.Bundle;
  12. import android.app.Activity;
  13. import android.view.Menu;
  14. import android.view.View;
  15. import android.view.View.OnClickListener;
  16. import android.widget.Button;
  17. public class MainActivity extends Activity {
  18. private Button dom_button;
  19. @Override
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.activity_main);
  23. dom_button = (Button) findViewById(R.id.dom);
  24. dom_button.setOnClickListener(new OnClickListener() {
  25. @Override
  26. public void onClick(View arg0) {
  27. // TODO Auto-generated method stub
  28. try {
  29. doDom(MainActivity.this.getResources().getAssets()
  30. .open("book.xml"));
  31. } catch (Exception e) {
  32. // TODO Auto-generated catch block
  33. e.printStackTrace();
  34. }
  35. }
  36. });
  37. }
  38. private void doDom(InputStream inStream) throws Exception {
  39. List<Book> books = new ArrayList<Book>();
  40. DocumentBuilderFactoryfactory = DocumentBuilderFactory.newInstance();
  41. DocumentBuilder builder = factory.newDocumentBuilder();
  42. Document dom = builder.parse(inStream);
  43. Element root = dom.getDocumentElement();
  44. NodeList item = root.getElementsByTagName("book");
  45. for (int i = 0; i < item.getLength(); i++) {
  46. Book book = new Book();
  47. Element bookNode = (Element) item.item(i);
  48. NodeList childNodes = bookNode.getChildNodes();
  49. for (int j = 0; j < childNodes.getLength(); j++) {
  50. Node node = childNodes.item(j);
  51. if (node.getNodeType() == Node.ELEMENT_NODE) {
  52. Element childnode = (Element) node;
  53. if ("id".equals(childnode.getNodeName())) {
  54. book.setId(childnode.getFirstChild().getNodeValue());
  55. } else if ("name".equals(childnode.getNodeName())) {
  56. book.setName(childnode.getFirstChild().getNodeValue());
  57. } else if ("price".equals(childnode.getNodeName())) {
  58. book.setPrize(childnode.getFirstChild().getNodeValue());
  59. }
  60. }
  61. }
  62. books.add(book);
  63. }
  64. for(Book book:books)
  65. {
  66. System.out.println(book.toString());
  67. }
  68. }
  69. }

发表评论

表情:
评论列表 (有 0 条评论,338人围观)

还没有评论,来说两句吧...

相关阅读

    相关 DOM解析XML

    XML 结构是一种树型结构,处理步骤都差不多,Java 己经将它们封装成了现成的类库。目前流行的解析方法有三种,分别为 DOM、SAS 和 DOM4j。 DOM(Docume

    相关 DOM解析XML

    XML可以作为一种的简单数据存储。 DOM解析,是将XML中的数据组织成一棵树,树的一个一个节点就是XML文档中的数据。 DOM解析XML流程: 1.建立一个解析器工厂,

    相关 DOM解析XML

    XML 结构是一种树型结构,处理步骤都差不多,Java 己经将它们封装成了现成的类库。目前流行的解析方法有三种,分别为 DOM、SAS 和 DOM4j。 DOM(Docu...