0
点赞
收藏
分享

微信扫一扫

Xml—dom4j解析以及写入xml文档时的乱码问题,34岁程序员年薪50w

霍华德 2022-03-18 阅读 91

book.xml

<?xml version="1.0" encoding="UTF-8"?>

<书架>

<书>

<书名>Java就业基础教程</书名>

<作者>张孝祥</作者>

<售价>48元</售价>

<售价>58元</售价>

</书>

<书>

<书名>JavaScript网页开发</书名>

<作者>黎活明</作者>

<售价>46元</售价>

</书>

</书架>

Dom4j.java

package yyy.dom4j;

import java.io.File;

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import java.util.List;

import org.dom4j.Document;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.Node;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

import org.junit.Test;

public class Dom4j {

private File file = new File(“src/book.xml”);

//遍历xml文档

@Test

public void testList() throws Exception{

SAXReader reader = new SAXReader();

Document document = reader.read(file);

Element root = document.getRootElement();

list(root);

}

public void list(Element element){

System.out.println(element.getName());

List nodes = element.elements();

//System.out.println(nodes.size());

for(Node node : nodes){

if(node instanceof Element){

list((Element) node);

}

}

}

//读取某个节点的值

@Test

public void read() throws Exception{

SAXReader reader = new SA

XReader();

Document document = reader.read(file);

Element root = document.getRootElement();

Element price = root.element(“书”).element(“作者”);

String value = price.getText();

System.out.println(value);

}

//添加某个节点

@Test

public void add() throws Exception{

SAXReader reader = new SAXReader();

Document document = reader.read(file);

Element price = DocumentHelper.createElement(“售价”); //创建新的节点

price.setText(“44元”);  //设置节点值

Element root = document.getRootElement();

root.element(“书”).add(price);  //添加节点

//将内存中的document对象重新写入xml文档   特别要注意乱码问题

//方法1:使用OutputStreamWriter设置写入文档时所使用的编码表

OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file),“utf-8”);

document.write(out);

out.close();

/*//方法2:

OutputFormat format = OutputFormat.createPrettyPrint();

format.setEncoding(“gb2312”);

XMLWriter writer = new XMLWriter(new FileWriter(file),format);

writer.write(document);

writer.close();*/

/*//方法3:

OutputFormat format = OutputFormat.createPrettyPrint();

XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(file),“utf-8”),format);

最后

都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。

技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;

Java语言与原理;
大厂,小厂。Android面试先看你熟不熟悉Java语言

高级UI与自定义view;
自定义view,Android开发的基本功。

性能调优;
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。

NDK开发;
未来的方向,高薪必会。

前沿技术;
组件化,热升级,热修复,框架设计

我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多

当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。

不出半年,你就能看出变化!

我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多

当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。

不出半年,你就能看出变化!

举报

相关推荐

0 条评论