java对xml文件的操作
xml文件格式(示例):
- <?xml version="1.0" encoding="UTF-8"?>
- <root>
- <FunctionKeySettings enabled="true">
- <FuncAssign id="0" selected="true">
- <Display>System Home</Display>
- <FuncKeys>
- <Func selected="true">System Home</Func>
- <Func>EZ Charger Suite</Func>
- <Func>RSI Home</Func>
- <Func>Web Browser NX</Func>
- <Func>ESA Transformer</Func>
- <Func>Print/Scan (Memory Storage Device)</Func>
- <Func>Printer (Smart)</Func>
- <Func>Printer (Classic)</Func>
- <Func>Copy (Smart)</Func>
- <Func>Copier (Classic)</Func>
- <Func>Scanner (Smart)</Func>
- <Func>Scanner (Classic)</Func>
- </FuncKeys>
- </FuncAssign>
- <FuncAssign id="1" selected="true">
- <Display>RSI Homerrrrr</Display>
- <FuncKeys>
- <Func>System Home</Func>
- <Func>EZ Charger Suite</Func>
- <Func selected="true">RSI Home</Func>
- <Func>Web Browser NX</Func>
- <Func>ESA Transformer</Func>
- <Func>Print/Scan (Memory Storage Device)</Func>
- <Func>Printer (Smart)</Func>
- <Func>Printer (Classic)</Func>
- <Func>Copy (Smart)</Func>
- <Func>Copier (Classic)</Func>
- <Func>Scanner (Smart)</Func>
- <Func>Scanner (Classic)</Func>
- </FuncKeys>
- </FuncAssign>
- <FuncAssign id="2" selected="true">
- <Display>EZ Charger Suite</Display>
- <FuncKeys>
- <Func>System Home</Func>
- <Func selected="true">EZ Charger Suite</Func>
- <Func>RSI Home</Func>
- <Func>Web Browser NX</Func>
- <Func>ESA Transformer</Func>
- <Func>Print/Scan (Memory Storage Device)</Func>
- <Func>Printer (Smart)</Func>
- <Func>Printer (Classic)</Func>
- <Func>Copy (Smart)</Func>
- <Func>Copier (Classic)</Func>
- <Func>Scanner (Smart)</Func>
- <Func>Scanner (Classic)</Func>
- </FuncKeys>
- </FuncAssign>
- </FunctionKeySettings>
- <WebBrowserNXSettings enabled="true">
- <HomePage>https://www.na.smart-integration.ricoh.com/si-apps/pub/index.html</HomePage>
- </WebBrowserNXSettings>
- </root>
对文件的操作:更新、新建、实例化
- package com.ricoh.rapp.deploymenttool.device;
- import java.io.File;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.List;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.dom4j.Document;
- import org.dom4j.DocumentHelper;
- import org.dom4j.Element;
- import com.ricoh.rapp.deploymenttool.ui.RSICloudModel;
- import com.ricoh.rapp.deploymenttool.ui.RSICloudModel.FunctionKey;
- import com.ricoh.rapp.deploymenttool.ui.RSICloudModel.FunctionKeyOptions;
- import com.ricoh.rapp.deploymenttool.util.Consts;
- import com.ricoh.rapp.deploymenttool.util.XmlParser;
- public class RSICloudXmlParser extends XmlParser{
- private static final Log logger = LogFactory.getLog(RSICloudXmlParser.class);
- private static final File file = new File(Consts.RSICLOUD_FILE_PATH);
- private static final File initialFile = new File(Consts.RSICLOUD_INITIAL_FILE_PATH);
- public static final String initialUrl = "https://www.na.smart-integration.ricoh.com/si-apps/pub/index.html";
- private static final String ELEMENT_ROOT = "root";
- private static final String ELEMENT_FUNCTIONKEY_SETTINGS = "FunctionKeySettings";
- private static final String ELEMENT_FUNCASSIGN = "FuncAssign";
- private static final String ELEMENT_DISPLAY = "Display";
- private static final String ELEMENT_FUNCKEYS = "FuncKeys";
- private static final String ELEMENT_FUNC = "Func";
- private static final String ELEMENT_WEBBROWSER_NXSETTINGS = "WebBrowserNXSettings";
- private static final String ELEMENT_HOMEPAGE = "HomePage";
- private static final String ATTR_ENABLED = "enabled";
- private static final String ATTR_ID = "id";
- private static final String ATTR_SELECTED = "selected";
- private static final String ATTR_VALUE_TRUE = "true";
- private static final String ATTR_VALUE_FALSE = "false";
- public static RSICloudModel parseRSICloudXML(){
- logger.info("parseRSICloudXML file: " + initialFile.getName());
- logger.info("parseRSICloudXML file: " + file.getName());
- Document document = null;
- if(file.exists()) {
- document = readXML(file);
- }else {
- document = readXML(initialFile);
- }
- return xmlFileToBean(document);
- }
- public static RSICloudModel resetParseRSICloudXML(){
- logger.info("parseRSICloudXML file: " + initialFile.getName());
- Document document = readXML(initialFile);
- return xmlFileToBean(document);
- }
- private static RSICloudModel xmlFileToBean(Document document) {
- RSICloudModel rsiCloud = new RSICloudModel();
- if(document == null) {
- return rsiCloud;
- }
- Element root = document.getRootElement();
- if(root == null) {
- return rsiCloud;
- }
- Element fkSettingsEle = root.element(ELEMENT_FUNCTIONKEY_SETTINGS);
- Element wbSettingsEle = root.element(ELEMENT_WEBBROWSER_NXSETTINGS);
- if (fkSettingsEle == null && wbSettingsEle == null) {
- return rsiCloud;
- }
- String fkEnabled = fkSettingsEle.attributeValue(ATTR_ENABLED);
- rsiCloud.setFunctionKeySettings(stringToBln(fkEnabled));
- List<FunctionKey> functionKeys = new ArrayList<>();
- for(Iterator rsiCloudsIterator = fkSettingsEle.elementIterator(ELEMENT_FUNCASSIGN); rsiCloudsIterator.hasNext();) {
- Element funcAssignEle = (Element) rsiCloudsIterator.next();
- FunctionKey FunctionKey = rsiCloud.new FunctionKey();
- String id = funcAssignEle.attributeValue(ATTR_ID);
- String isSelected = funcAssignEle.attributeValue(ATTR_SELECTED);
- String dispalyName = funcAssignEle.element(ELEMENT_DISPLAY).getText();
- FunctionKey.setId(Integer.parseInt(id));
- FunctionKey.setFuncAssign(stringToBln(isSelected));
- FunctionKey.setDispalyName(dispalyName);
- List<FunctionKeyOptions> functionKeyOptions = new LinkedList<>();
- for(Iterator funcIterator = funcAssignEle.element(ELEMENT_FUNCKEYS).elementIterator(ELEMENT_FUNC); funcIterator.hasNext();) {
- Element funcEle = (Element) funcIterator.next();
- FunctionKeyOptions functionKeyOption = rsiCloud.new FunctionKeyOptions();
- String selectedOpt = funcEle.attributeValue(ATTR_SELECTED);
- String optValue = funcEle.getText();
- functionKeyOption.setSelected(stringToBln(selectedOpt));
- functionKeyOption.setChoiceValues(optValue);
- functionKeyOptions.add(functionKeyOption);
- }
- FunctionKey.setFunctionKeyOptions(functionKeyOptions);
- functionKeys.add(FunctionKey);
- }
- rsiCloud.setFunctionKeys(functionKeys);
- String wbEnabled = wbSettingsEle.attributeValue(ATTR_ENABLED);
- rsiCloud.setWebBrowserNXSettings(stringToBln(wbEnabled));
- String homePageUrl = wbSettingsEle.element(ELEMENT_HOMEPAGE).getText();
- rsiCloud.setHomePageUrl(homePageUrl);
- return rsiCloud;
- }
- public static boolean saveCustomSettings(RSICloudModel rsiCloud) {
- if(file.exists()) {
- return updateRSICloudXML(rsiCloud);
- }else {
- return createRSICloudXml(rsiCloud);
- }
- }
- public static boolean updateRSICloudXML(RSICloudModel rsiCloud) {
- Document document = readXML(file);
- if(document == null || rsiCloud == null) {
- return false;
- }
- Element root = document.getRootElement();
- Element fkSettingsEle = root.element(ELEMENT_FUNCTIONKEY_SETTINGS);
- boolean functionKeySettings = rsiCloud.isFunctionKeySettings();
- fkSettingsEle.addAttribute(ATTR_ENABLED, booleanToStr(functionKeySettings));
- List<FunctionKey> functionKeys = rsiCloud.getFunctionKeys();
- for(Iterator rsiCloudsIterator = fkSettingsEle.elementIterator(ELEMENT_FUNCASSIGN); rsiCloudsIterator.hasNext();) {
- Element funcAssignEle = (Element) rsiCloudsIterator.next();
- int id = Integer.parseInt(funcAssignEle.attributeValue(ATTR_ID));
- for(FunctionKey functionKey : functionKeys) {
- if(functionKey.getId() == id) {
- boolean isSelected = functionKey.isFuncAssign();
- funcAssignEle.addAttribute(ATTR_SELECTED, booleanToStr(isSelected));
- String displayName = functionKey.getDispalyName().trim();
- funcAssignEle.element(ELEMENT_DISPLAY).setText(displayName);
- for(Iterator funcIterator = funcAssignEle.element(ELEMENT_FUNCKEYS).elementIterator(ELEMENT_FUNC); funcIterator.hasNext();) {
- Element funcEle = (Element) funcIterator.next();
- String funcValue = funcEle.getText();
- List<FunctionKeyOptions> functionKeyOptions = functionKey.getFunctionKeyOptions();
- for(FunctionKeyOptions functionKeyOption : functionKeyOptions) {
- if(functionKeyOption.isSelected() && funcValue.trim().equals(functionKeyOption.getChoiceValues().trim())) {
- funcEle.addAttribute(ATTR_SELECTED, booleanToStr(true));
- }
- if(!functionKeyOption.isSelected() && funcValue.trim().equals(functionKeyOption.getChoiceValues().trim())) {
- funcEle.remove(funcEle.attribute(ATTR_SELECTED));
- }
- }
- }
- }
- }
- }
- Element wbSettingsEle = root.element(ELEMENT_WEBBROWSER_NXSETTINGS);
- boolean webBrowserSetting = rsiCloud.isWebBrowserNXSettings();
- wbSettingsEle.addAttribute(ATTR_ENABLED, booleanToStr(webBrowserSetting));
- String homePageUrl = rsiCloud.getHomePageUrl();
- wbSettingsEle.element(ELEMENT_HOMEPAGE).setText(homePageUrl);
- writeXML(document, file);
- return true;
- }
- private static boolean createRSICloudXml(RSICloudModel rsiCloud) {
- if(file.isFile() && file.exists()) {
- return true;
- }else {
- try {
- file.createNewFile();
- } catch (IOException e) {
- logger.error("createRSICloudXml failed:File name: " + file.getName() + ", File path:" + file.getAbsolutePath()
- + ", IOException:" + e.getMessage());
- }
- }
- if(rsiCloud == null) return false;
- Document document = DocumentHelper.createDocument();
- Element root = document.addElement(ELEMENT_ROOT);
- Element fkSettingsEle = root.addElement(ELEMENT_FUNCTIONKEY_SETTINGS);
- if(rsiCloud.isFunctionKeySettings()) {
- fkSettingsEle.addAttribute(ATTR_ENABLED, ATTR_VALUE_TRUE);
- }else {
- fkSettingsEle.addAttribute(ATTR_ENABLED, ATTR_VALUE_FALSE);
- }
- for(FunctionKey functionKey : rsiCloud.getFunctionKeys()) {
- Element funcAssignEle = fkSettingsEle.addElement(ELEMENT_FUNCASSIGN);
- funcAssignEle.addAttribute(ATTR_ID, String.valueOf(functionKey.getId()));
- funcAssignEle.addAttribute(ATTR_SELECTED, ATTR_VALUE_TRUE);
- if(functionKey.isFuncAssign()) {
- funcAssignEle.addAttribute(ATTR_SELECTED, ATTR_VALUE_TRUE);
- }else {
- funcAssignEle.addAttribute(ATTR_SELECTED, ATTR_VALUE_FALSE);
- }
- Element displayEle = funcAssignEle.addElement(ELEMENT_DISPLAY);
- displayEle.setText(functionKey.getDispalyName());
- Element funcKeysEle = funcAssignEle.addElement(ELEMENT_FUNCKEYS);
- for(FunctionKeyOptions functionKeyOption :functionKey.getFunctionKeyOptions()) {
- Element funcEle = funcKeysEle.addElement(ELEMENT_FUNC);
- funcEle.setText(functionKeyOption.getChoiceValues());
- if(functionKeyOption.isSelected()) funcEle.addAttribute(ATTR_SELECTED, ATTR_VALUE_TRUE);
- }
- }
- Element webBrowSettingsEle = root.addElement(ELEMENT_WEBBROWSER_NXSETTINGS);
- if(rsiCloud.isWebBrowserNXSettings()) {
- webBrowSettingsEle.addAttribute(ATTR_ENABLED, ATTR_VALUE_TRUE);
- }else {
- webBrowSettingsEle.addAttribute(ATTR_ENABLED, ATTR_VALUE_FALSE);
- }
- Element homePageEle = webBrowSettingsEle.addElement(ELEMENT_HOMEPAGE);
- homePageEle.setText(rsiCloud.getHomePageUrl());
- return writeXML(document, file);
- }
- public static boolean stringToBln(String str) {
- if(str != null && ATTR_VALUE_TRUE.equals(str.trim())) {
- return true;
- }
- return false;
- }
- public static String booleanToStr(boolean bln) {
- if(bln) {
- return ATTR_VALUE_TRUE;
- }else {
- return ATTR_VALUE_FALSE;
- }
- }
- public static void main(String[] args) throws IOException {
- /*RSICloudModel rsiCloud = RSICloudXmlParser.parseRSICloudXML();
- for(FunctionKey functionKey: rsiCloud.getFunctionKeys()) {
- if(functionKey.getId() == 0) {
- functionKey.getFunctionKeyOptions().toArray();
- }
- }*/
- // createRSICloudXml(null);
- System.out.println(initialUrl);
- }
- }
java对xml文件的操作的更多相关文章
- 更新java对xml文件的操作
//更新java在xml文件中操作的内容 public static void upda(Document doc) throws Exception{ //创建一个TransformerFactor ...
- Java 创建xml文件和操作xml数据
java中的代码 import java.io.File; import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; ...
- # java对xml文件的基本操作
下面是简单的总结三种常用的java对xml文件的操作 1. dom方式对xml进行操作,这种操作原理是将整个xml文档读入内存总,在内存中进行操作,当xml文档非常庞大的时候就会出现内存溢出的异常,这 ...
- JAVA读取XML文件并解析获取元素、属性值、子元素信息
JAVA读取XML文件并解析获取元素.属性值.子元素信息 关键字 XML读取 InputStream DocumentBuilderFactory Element Node 前言 最 ...
- java对xml文件做增删改查------摘录
java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...
- java 读取XML文件作为配置文件
首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...
- Java 字节流实现文件读写操作(InputStream-OutputStream)
Java 字节流实现文件读写操作(InputStream-OutputStream) 备注:字节流比字符流底层,但是效率底下. 字符流地址:http://pengyan5945.iteye.com/b ...
- java读XML文件
XML文件设计为传输和存储数据,其焦点为数据内容. HTML设计为用来显示数据, 其焦点为数据外观. XML仅仅是文本文件,任何文本编辑器一般情况下都能对其进行编辑. XML没有预定义的标签,并且设定 ...
- java读取xml文件报“org.xml.sax.SAXParseException: Premature end of file” .
背景:java读取xml文件,xml文件内容只有“<?xml version="1.0" encoding="UTF-8"?>”一行 java读取该 ...
随机推荐
- Spring Boot 2.x基础教程:使用tinylog记录日志
tinylog简介 tinylog,与其他各种tiny开头的东西一样,是一个轻量级的开源日志解决方案.它本身只包含两个JAR文件(一个用于API,另一个用于实现),没有任何外部依赖关系.两个JAR文件 ...
- 再见收费的Navicat!操作所有数据库就靠它了!
作为一名开发者,免不了要和数据库打交道,于是我们就需要一款顺手的数据库管理工具.很长一段时间里,Navicat 都是我的首选,但最近更换了一台新电脑,之前的绿色安装包找不到了. 于是就琢磨着,找一款免 ...
- 四路4 GSPS@ 12 bit,四路12 GSPS@16 位4T4R 射频芯片AD9988
一.产品概述 AD9988 是一款高度集成的套件,是北京太速最新研发的,具有四个 16 位.12 GSPS 最大采样率.RF 数模转换器 (DAC) 内核,以及四个 12 位.4 GSPS 速率.RF ...
- Solution -「ARC 082D」Sandglass
\(\mathcal{Description}\) Link. 一个沙漏内共 \(Xg\) 沙,令初始时上半部分为 A,下半部分为 B.沙漏在 \(r_1,r_2,\cdots,r_n\) 时 ...
- soc AXI接口术语和特性
AXI接口术语和特性 1.outstanding 2.interleaving 3.out-of-oder 4.写数据可以优先于写地址 5.大小端 小端:低地址数据放在总线bus的低位. 大端:低地址 ...
- MXNet源码分析 | Gluon接口分布式训练流程
本文主要基于MXNet1.6.0版本,对Gluon接口的分布式训练过程进行简要分析. 众所周知,KVStore负责MXNet分布式训练过程中参数的同步,那么它究竟是如何应用在训练中的呢?下面我们将从G ...
- Dubbo源码剖析六之SPI扩展点的实现之Adaptive功能实现原理
接Dubbo源码剖析六之SPI扩展点的实现之getExtensionLoader - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)继续分析Adaptive功能实现原理.Adaptive的主 ...
- FreeHttp2.3升级说明
一.升级方法 下载新版本插件 https://files.cnblogs.com/files/lulianqi/FreeHttp2.3.0zip 或 http://lulianqi.com/file ...
- webshell安全教程防止服务器被破解
直接上传取得webshell 因过滤上传文件不严,导致用户能够直接上传webshell到网站恣意可写目录中,然后拿到网站的办理员操控权限. 2 增加修正上传类型 现在很多脚本程序上传模块不是只允许上传 ...
- MyBatis分页插件PageHelper使用方法
1.导入相关依赖坐标 <!-- MyBatis分页插件 --> <dependency> <groupId>com.github.pagehelper</gr ...