zoukankan      html  css  js  c++  java
  • DOM生成&解析

    开篇注意,由于解析有可能有大文件非常耗时,建议另开一个线程解析也可以不开具体视情况而定
     
     
    DOM生成
    1.拿到Document的工厂实例化
    DocumentBuilderFactory df =DocumentBuilderFactory.newInstance();
    2.通过工厂实例化拿到Document的构造实力
    DocumentBuilder db = df.newDocumentBuilder();
    3.通过Document的构造实力拿到文档实例
    Document dm = db.newDocument();
    4..通过文档实例创建节点
    Element rootElement = dm.createElement(节点的名Tag);
    5.给节点设置属性
    rootElement .setAttribute(属性名,属性值);
    6.设置节点的关系(谁是谁的子元素)
    dm..appendChild(根节点);其他的节点也可以这样设置子节点,前提是子节点已经加载完成或者设置完毕
    7.输出到文件
    7.1变压工厂实例
    TransformerFactory tf = TransformerFactory.newInstance();
    7.2拿到变压工厂
    Transformer tm = tf.newTransformer();
    7.3设置工厂的输出格式
    tm.setOutputProperty(OutputKeys.ENCODING,"utf-8");//设置编码
    7.4输出文档
    DOMSource ds = new DOMSource(dm);
    7.5设置文档输出位置(也就是路径)
    StreamResult sr = new StreamResult(new File(getFilesDir().getPath()+"/mydoc.xml"));
    7.6设置需要输出的文档,以及路径
    tm.transform(ds, sr);
     
    DOM解析
    // 拿到document的工厂方法                               
    DocumentBuilderFactory doc = DocumentBuilderFactory.newInstance();
    // 拿到document的构建器
    DocumentBuilder nb = doc.newDocumentBuilder();
    // 加载需要解析的文件
    Document parse = nb.parse(open);
    // 拿到文件的根节点
    Element root = parse.getDocumentElement();
    //通过根节点拿到子节点的集合
    NodeList pnl = root.getElementsByTagName("province");
    //遍历节点的集合
    for (int p = 0; p < pnl.getLength(); p++) {
    //在遍历的过程中可以通过.item()放入下标的方式拿到单独的一个节点类型是一个Node类型然后转换为Element类型,因为Element继承了Node
    Element ep = (Element) pnl.item(p);
    }
    中心点:Element拿到参数通过getAttribute(参数名)内容可以通过getTextContent()获取
  • 相关阅读:
    算法之我见
    meobius与DBTwin实现原理
    MongoDB应用学习
    重要通知
    lucenc代码阅读指南、测试范例
    什么是IoC以及理解为什么要使用Ioc
    策略模式实现支持多种类数据库的DBHelp
    为什么使用TFS 2012进行源代码管理——TFS 2012使用简介(一)
    我们到底能走多远系列
    Eclipse+Tomcat+MySQL+MyEclipse
  • 原文地址:https://www.cnblogs.com/lizhanqi/p/5659120.html
Copyright © 2011-2022 走看看