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()获取
原文地址:https://www.cnblogs.com/lizhanqi/p/5659120.html