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()获取
  • 相关阅读:
    [NOIP2015] 子串 题解
    [NOIP2011] 聪明的质检员 题解
    二进制的一些概念
    [NOIP2012] 借教室 题解
    [POJ3764] The XOR Longest Path 题解
    关于本博客
    【SC-MY限定】让填写问卷星成为自动化!
    JZOJ5833 永恒
    九校联考-DL24凉心模拟Day2总结
    【简解】SP7556 Stock Charts
  • 原文地址:https://www.cnblogs.com/lizhanqi/p/5659120.html
Copyright © 2011-2022 走看看