dom4j 写UTF-8的xml乱码问题 使用FileOutputStream

	public static int createXml(String file){
		
		int returnValue = 0;
		Document doc = null;
		XMLWriter writer;
		try {			
			doc = getDoc();
			File fileT = new File(file);
			if(!fileT.createNewFile()){
				fileT.delete();
				fileT = new File(file);
			}

			writer = new XMLWriter(new FileOutputStream(fileT));
			writer.write(doc);
			writer.close();
			returnValue = 1;
		} catch (IOException e) {
			e.printStackTrace();
		}

		return returnValue;
	}





	public static Document getDoc() throws UnsupportedEncodingException{
		Document doc = DocumentHelper.createDocument();
		
		Element acountE = doc.addElement("acount");
		acountE.addComment("中国");
		Element rolesE = acountE.addElement("roles");
		Element usersE = acountE.addElement("users");
		ROLE[] roles = ROLE.values();
		for(int i=0; i<3; i++){
			Element roleE = rolesE.addElement("role");
			roleE.addAttribute("id", roles[i].toString());
			roleE.setText(role[i]);
		}
		for(int i=0; i<4; i++){
			Random ran = new Random();
			int roleT = ran.nextInt(3)+1;
			Element userE = usersE.addElement("user");
			userE.addAttribute("id", getUserId());
			userE.addElement("name").setText("name"+i);
			userE.addElement("password").setText(md5(String.valueOf(i)));
			userE.addElement("role").setText("ROLE"+roleT);
		}

		return doc;
	}


public static Acount readXml(File file) throws DocumentException{
		SAXReader reader = new SAXReader();
		Acount acount = new Acount();

			Document doc = reader.read(file);
			Element root = doc.getRootElement();
			Element rolesE = (Element)root.element("roles");
			Element usersE = (Element)root.element("users");
			List roles = rolesE.elements("role");
			List users = usersE.elements("user");
				
			List<Role> listR = new ArrayList<Role>();
			List<User> listU = new ArrayList<User>();
			for(int i=0; i<roles.size(); i++){
				Element role = (Element)roles.get(i);
				Role roleV = new Role();
				roleV.setRoleid(role.attributeValue("id"));
				roleV.setRolename(role.getText());
				listR.add(roleV);
			}
			acount.setRoles(listR);

			for(int i=0; i<users.size(); i++){
				Element user = (Element)users.get(i);
				User userV = new User();
				userV.setUserid(user.attributeValue("id"));
				userV.setName(user.elementText("name"));
				userV.setPassword(user.elementText("password"));
				userV.setRoleid(user.elementText("role"));
				listU.add(userV);
			}
			acount.setUsers(listU);

		return acount;
	}


效果:
XML:

引用

<?xml version="1.0" encoding="UTF-8"?>
<acount><!--中国-->
<roles>
<role id="ADMIN">故事里德是说不是就是不是</role>
<role id="USER">管理モジュール使い者</role>
<role id="GUEST">会社ホームページ使い者</role>
</roles>
<users>
<user id="129c9ed29ea">
<name>name0</name>
<password>cfcd208495d565ef66e7dff9f98764da</password>
<role>ROLE3</role>
</user>
<user id="129c9ed2a57">
<name>name1</name>
<password>c4ca4238a0b923820dcc509a6f75849b</password>
<role>ROLE3</role>
</user>
<user id="129c9ed2ab5">
<name>name2</name>
<password>c81e728d9d4c2f636f067f89cc14862c</password>
<role>ROLE2</role>
</user>
<user id="129c9ed2b23">
<name>name3</name>
<password>eccbc87e4b5ce2fe28308fd9f2a7baf3</password>
<role>ROLE2</role>
</user>
</users>
</acount>

你可能感兴趣的:(java,xml)