2021年1月23日星期六

DOM解析

原文链 id="dom解析">DOM解析

DOM解析介绍

DOM是基于属性结构的

DOM树所提供的随机访问方式很灵活方便,可以任意地控制整个

DOM解析示例

DOM接口介绍

介绍一下DOM解析中的核心接口

  • Document:代表了整个
  • public NodeList getElementsByTagName(String tagname); 取得指定节点名称的NodeList
  • public Element createElement(String tagName) 创建一个指定名称的节点
  • public Text createTextNode(String data) 创建一个文本内容节点
  • public Attr createAttribute(String name) 创建一个属性
  • NodeList: 表示一个节点的集合
    • public int getLength(); 取得节点的个数
    • public Node item(int index); 根据索引取得节点对象
  • Node:每一个Node代表了DOM树中的一个节点
    • public Node appendChild(Node newChild) 在当前节点下增加一个新的节点
    • public NodeList getChildNodes() 得到本节点下的全部子节点
    • public Node getFirstChild() 得到本节点下的第一个子节点
    • public Node getLastChild() 得到本节点下最后一个子节点
    • public boolean hasChildNodes() 判断是否还有其他节点
    • public boolean hasAttributes() 判断是否还有其他属性
    • public String getNodeValue() 获取节点内容
  • NamedNodeMap:表示一组节点和其唯一名称对应的一一对应关系,主要用于属性节点的表示
  • 方法使用示例

    操作dom树读取节点内容
    // 获取mapper节点NodeList mapperList = document.getElementsByTagName("mapper");for(int i = 0;i<mapperList.getLength();i++){ Node mapperNode = mapperList.item(i); if(mapperNode.hasAttributes()){ // 找到mapper节点的namespace属性节点 Node namespace = mapperNode.getAttributes().getNamedItem("namespace"); // namespace属性节点内容 System.out.println(namespace.getNodeValue()); } if(mapperNode.hasChildNodes()){ // mapper节点的子节点 NodeList childNodes = mapperNode.getChildNodes(); // 遍历子节点 for(int j = 0;j<childNodes.getLength();j++){  Node childNode = childNodes.item(j);  if("resultMap".equals(childNode.getNodeName())){  //TODO  } else if("select".equals(childNode.getNodeName())){  //TODO  } else if("insert".equals(childNode.getNodeName())){  //TODO  } } }}
    创建dom节点
    // 创建test节点作为根节点Element root = document.createElement("test");// 创建type属性Attr type = document.createAttribute("type");type.setNodeValue("test");// 创建id节点Element id = document.createElement("id");// 创建文本节点,并放到id节点中id.appendChild(document.createTextNode("001"));// 创建name节点Element name = document.createElement("name");// 创建文本节点,并放到name节点中name.appendChild(document.createTextNode("张三"));// 设置属性节点root.setAttributeNode(type);// 将节点放入父节点中root.appendChild(id);root.appendChild(name);document.appendChild(root);

    DOM持久化

    将生成的

    类介绍

    • TransformerFactory 取得一个Transformer对象
    • DOMSource 接收Document对象
    • StreamResult 指定要使用的输出流对象(可以向文件输出,也可以指定其他输出流)
    TransformerFactory factory = TransformerFactory.newInstance();Transformer transformer;try { transformer = factory.newTransformer();} catch (TransformerConfigurationException e) { throw new RuntimeException("创建Transformer失败",e);}// 设置

    解析器自定义设置方法介绍

    下面介绍一些DocumentBuilderFactory中用来设置解析器行为的一些配置可能会用到的方法,但是就不写代码示例了

    // 该方法指定解析器是否将CDATA节点转换为文本节点,以及是否将它和周围的文本节点合并,默认falsepublic void setCoalescing(boolean coalescing)// 指定解析器是否展开外部实体引用,如果为true,外部数据将插入文档,默认truepublic void setExpandEntityReferences(boolean expandEntityRef) // 指定解析器是否忽略文档中的注释。默认falsepublic void setIgnoringComments(boolean ignoreComments) // 指定是否忽略元素内容中的空白。默认falsepublic void setIgnoringElementContentWhitespace(boolean whitespace) // 指定是否支持

    DOM解析的优缺点

    • 优点:可以根据需求在树形结构的各节点之间导航,轻易获取到所要的数据,也可以很容易地添加和修改树中的元素。
    • 缺点: 需要将整个

    由于本身的博客百度没有收录,博客地 />






    原文转载:http://www.shaoqun.com/a/512654.html

    跨境电商:https://www.ikjzd.com/

    naver:https://www.ikjzd.com/w/1727

    marks spencer:https://www.ikjzd.com/w/2385


    原文链id="dom解析">DOM解析DOM解析介绍DOM是基于属性结构的DOM树所提供的随机访问方式很灵活方便,可以任意地控制整个DOM解析示例下面以mybatis的一个mapper.<!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/d
    tradeindia:tradeindia
    心怡物流:心怡物流
    印度电商平台或进军信贷领域,促进电商平台交易!:印度电商平台或进军信贷领域,促进电商平台交易!
    深圳桃源地铁站附近有什么好玩好吃的地方?:深圳桃源地铁站附近有什么好玩好吃的地方?
    亚马逊将进军巴西时尚及运动服装市场:亚马逊将进军巴西时尚及运动服装市场

    没有评论:

    发表评论