• 元素(Element)和结点(Node)的区别(org.w3c.dom)


    1.元素(Element)和结点(Node)的区别,
    元素是一个小范围的定义,必须是含有完整信息的结点才是一个元素,例如


    但是一个结点不一定是一个元素,而一个元素一定是一个结点。

    什么是node:

    NODE是相对TREE这种数据结构而言的。TREE就是由NODE组成。这个部分你可以参考离散数学的树图。
    node有几个子类型:
    Element, Text, Attribute, RootElement, Comment, Namespace等

    什么是element

    ELEMENT则是XML里的概念,例如就是元素,是XML中的数据的组成部分之一。
    Element是可以有属性和子节点的node。
    例如 test,有文本子节点。test,有属性和test文本子节点。也是元素。也是元素。

    Element是从Node继承的

    素(Element)和结点(Node)的区别,
    元素是一个小范围的定义,必须是含有完整信息的结点才是一个元素,例如

    。但是一个结点不一定是一个元素,而一个元素一定是一个结点。

    DOM将文档中的所有都看作节点 node>element

    1DOM在解析文档的时候按整个文档的结构生成一棵树,全部保存在内存

    优点就是整个文档都一直在内存中,我们可以随时访问任何节点,并且对树的遍历也是比较熟悉的操作;缺点则是耗内存,并且必须等到所有的文档都读入内存才能进行处理。
    2一个需要注意的地方就是,XML文档两个标签之间的空白也是这棵树的一个节点(Text节点)。 a有三个节点

    Element root = doc.getDocumentElement();:root是什么???? 当然既是元素又是节点了,因为元素一定是节点

    NodeList list = root.getChildNodes(); :节点数目要比元素数目多。因为

    node有几个子类型:

    Element,
    
      Text,
    
    Attribute,
    

    RootElement,

    Comment,
    
    Namespace等
    

    Element是可以有属性和子节点的node。

    Element是从Node继承的

    //转换

    if (node.getNodeType() == Element.ELEMENT_NODE)

    {
    Element e = (Element) node;

    }

    元素有孩子吗

    elemen et 性质

    1 e.getAttributes()
    2 e.getChildNodes()

    3 e.getTagName()

    Element root = doc.getDocumentElement();
    NodeList list = root.getChildNodes();
    ······················································

    public void domParse(String fileName) throws Exception {
    DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = f.newDocumentBuilder();//builder
    Document docment = db.parse(new File(fileName));//parese

    Element el = docment.getDocumentElement();//root
    domRead(el);

    }

    public void domRead(Element currentNode) {
    if (“struts-config”.equals(currentNode.getNodeName())) {
    config = new StrutsConfig();
    }

    NodeList list = currentNode.getChildNodes();
    for (int i = 0; i < list.getLength(); i++) {
    Node node = list.item(i);
    if (node.getNodeType() == Element.ELEMENT_NODE) {
    Element e = (Element) node;

    if ("form-beans".equals(e.getTagName())) {
     formBeans = new ArrayList<FormBeanConfig>();
     domRead(e);
    }
    if ("form-bean".equals(e.getTagName())) {
     FormBeanConfig fc = new FormBeanConfig();
     NamedNodeMap attrs = e.getAttributes();
    
     for (int j = 0; j < attrs.getLength(); j++) {
      Attr attr = (Attr) attrs.item(j);
      if ("name".equals(attr.getName())) {
       fc.setName(attr.getValue());
      } else {
       fc.setType(attr.getValue());
      }
     }
     formBeans.add(fc);
    }
    if ("action-mapping".equals(e.getTagName())) {
     actions = new ArrayList<ActionConfig>();
     domRead(e);
    }
    if ("action".equals(e.getTagName())) {
     ActionConfig ac = new ActionConfig();
     NamedNodeMap attrs = e.getAttributes();
     for (int k = 0; k < attrs.getLength(); k++) {
      Attr attr = (Attr) attrs.item(k);
      if ("path".equals(attr.getName())) {
       ac.setPath(attr.getValue());
      } else if ("type".equals(attr.getName())) {
       ac.setType(attr.getValue());
      } else {
       ac.setName(attr.getValue());
      }
     }
    
     actions.add(ac);
    }
    

    }
    }
    }

  • 相关阅读:
    Qt 读写XML文件
    用 Qt 中的 QDomDocument类 处理 XML 文件(上)
    Qss
    QTableWidget的使用和美工总结
    用 Qt 中的 QDomDocument类 处理 XML 文件(下)
    ArcEngine中最短路径的实现
    AE中网络分析的实现 的各个类之间的关系
    AE控制图层中要素可见状态的几种方法
    如何使用Name对象,包括WorkspaceNames和DatasetNames
    AE属性表操作
  • 原文地址:https://www.cnblogs.com/mrcharles/p/11879940.html
Copyright © 2020-2023  润新知