处理保存XML编码问题的解决方法(2)

 

输出文件时,属性的值没有发生改变

 

 

                       String src = request.getSession().getServletContext().getRealPath(
					"/");
			File file = new File(src + "xml/scene.xml");
			SAXReader sax = new SAXReader();
			Document document = sax.read(file);
			Element root = document.getRootElement();
			Element returnHome = root.element("returnHome");
			Element lightin = returnHome.element("lighting");
			System.out.println(lightin);
			boolean flag=false;
			for (Iterator it = lightin.elementIterator(); it.hasNext();) {
				Element element = (Element) it.next();
				System.out.println(element.attribute("value").getValue());
				System.out.println(element.attribute("status").getValue());
				if ("lighiting1".equals(element.attributeValue("value"))) {
					element.attribute("status").setValue("1");
					flag=true;
					continue;
				}
			}
			if (flag) {
				StringWriter writer = new StringWriter();
		        OutputFormat format = OutputFormat.createPrettyPrint(); 
		        format.setEncoding("utf-8");
		        XMLWriter xmlwriter = new XMLWriter(writer, format);
		        xmlwriter.write(document);  
		        writer.flush();
		        xmlwriter.flush();
		        writer.close();
		        xmlwriter.close();
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		}

 作修改之后 的代码为:

 

try {
			String src = request.getSession().getServletContext().getRealPath(
					"/");
			String path=src + "xml/scene.xml";
			File file = new File(src + "xml/scene.xml");
			SAXReader sax = new SAXReader();
			Document document = sax.read(file);
			Element root = document.getRootElement();
			Element returnHome = root.element("returnHome");
			Element lightin = returnHome.element("lighting");
			System.out.println(lightin);
//			String[] lighting = request.getParameterValues("lighting");
//			String[] curtain = request.getParameterValues("curtain");
			boolean flag=false;
			for (Iterator it = lightin.elementIterator(); it.hasNext();) {
				Element element = (Element) it.next();
				System.out.println(element.attribute("value").getValue());
				System.out.println(element.attribute("status").getValue());
				if ("lighiting1".equals(element.attributeValue("value"))) {
					element.attribute("status").setValue("1");
					element.attribute("name").setValue("XXXXXXXXXXX");
					flag=true;
//					closeAction();
					continue;
				}
			}
			if (flag) {
				FileWriter writer = new FileWriter(path);
		        OutputFormat format = OutputFormat.createPrettyPrint(); 
		        format.setEncoding("utf-8");
		        XMLWriter xmlwriter = new XMLWriter(writer, format);
		        xmlwriter.write(document); 
		        writer.flush();
		        xmlwriter.flush();
		        writer.close();
		        xmlwriter.close();
//				 FileWriter out = new FileWriter(filename);
//				 document.write(out);
//				 out.flush();
//				 out.close();
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		}

 

原因:

   在输入新文件的时候,应该指定文件的路径.

 

 

最近又发现了一个问题..就是我指定的文件保存为UTF-8,可以保存之后打开查看还是ASNI编码格式,

 

后来经过调试发现,直接通过文件流来保存不会出现这样的情况并且代码也少了一大截

 

如:

 

FileOutputStream   os   =   new   FileOutputStream( path); 
os.write(document.asXML().getBytes( "UTF-8 ")); 
os.close;
 

 


要下载Flink SQL Connector for MySQL CDC,您可以按照以下步骤进行操作: 1. 首先,您需在您的项目中添加Flink SQL Connector for MySQL CDC的依赖项。可以使用Maven或Gradle构建工具来完成这一步骤。在您的项目配置文件中,将以下代码添加到依赖项部分: ``` <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-sql-connector-mysql-cdc_2.11</artifactId> <version>1.13.1</version> </dependency> ``` 2. 在使用Flink SQL Connector for MySQL CDC之前,您需要确保已经安装并启动了Flink集群。您可以从Flink官方网站下载并按照安装说明进行安装。 3. 下一步是配置MySQL的Change Data Capture (CDC)。您可以在MySQL的配置文件中启用CDC功能,并配置要监视的数据库表。具体配置项可能会因MySQL版本而有所不同,您可以参考MySQL的官方文档或相关教程进行操作。 4. 配置完CDC后,您可以使用Flink的Table API或SQL语句来读取CDC的数据。可以使用`TableEnvironment`对象来创建与MySQL CDC连接,并定义CDC表。以下是一个示例代码片段: ```java // 创建Flink Table环境 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); // 注册MySQL CDC Connector String ddl = "CREATE TABLE mysql_cdc_table (..., PRIMARY KEY (id)) " + "WITH (...properties...) "; tableEnv.executeSql(ddl); // 查询CDC数据 String query = "SELECT * FROM mysql_cdc_table"; Table result = tableEnv.sqlQuery(query); // 打印查询结果 tableEnv.toRetractStream(result, Row.class).print(); // 执行作业 env.execute(); ``` 这样,您就可以下载、配置和使用Flink SQL Connector for MySQL CDC来处理MySQL的Change Data Capture数据了。若需要进一步了解和使用该连接器的更多功能,建议参考官方文档或相关教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值