Atitit java解析yml文件 以及使用 spel ognl 读取 v4 u77.docx Atitit java解析yml文件 目录 1.1. Springboot use snak
Atitit java解析yml文件 以及使用 spel ognl 读取 v4 u77.docx
Atitit java解析yml文件
目录
1.1. Springboot use snakeyaml 1
2. 方式一:snakeyaml 2
2.1. 多文档快的解决 3
2.2. loadall 3
2.3. 问题解决 4
2.4. Code 4
3. 方式二:jyaml 5
- Springboot use snakeyaml
package miniCodePrjPkg;
import org.checkerframework.checker.units.qual.Speed;//
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
//import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.yaml.snakeyaml.Yaml;
import com.google.common.collect.Maps;
//@SpringBootApplication
public class YmlUtil {
public static void main(String[] args) {
//Maps.newLinkedHashMap()
Yaml yaml = new Yaml();
Object ret = yaml.load(YmlUtil.class.getClassLoader()
.getResourceAsStream("bootstrap.yml"));
System.out.println(ret);
ExpressionParser parser = new SpelExpressionParser();
EvaluationContext context3 = new StandardEvaluationContext();
context3.setVariable("map8", ret);
Object result3 = new SpelExpressionParser().parseExpression("#map8['spring']['profiles']['active']").getValue(context3);
System.out.println(result3);
System.out.println("f");
}
}
- 方式一:snakeyaml
maven依赖添加
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.10</version>
private static void ymlSingledoc(String ymlString) throwsFileNotFoundException {
// ymlString="H:\\gitWorkSpace\\tomcatx\\t.yml";
org.yaml.snakeyaml.Yaml yaml = new org.yaml.snakeyaml.Yaml();
// Object mObject=yaml.load(sonsyefen.class.getResourceAsStream("/test.yml"));
Object mObject = yaml.load(new FileInputStream(ymlString));
System.out.println(JSON.toJSONString(mObject, true));
// TestEntity testEntity =
// yaml.loadAs(sonsyefen.class.getResourceAsStream("/test.yml"),
// TestEntity.class);//如果读入Map,这里可以是Mapj接口,默认实现为LinkedHashMap
}
- 多文档快的解决
- loadall
在一个yaml文件中可以存入多组配置并使用loadAll进行读取,多组之间使用三个横杠分开
@Test
public void loadall() throws FileNotFoundException {
Yaml yaml = new Yaml();
File f = new File("test.yaml");
Iterable<Object> result = yaml.loadAll(new FileInputStream(f));
for (Object obj : result) {
System.out.println(obj.getClass());
System.out.println(obj);
}
}
----test.yaml---
- 问题解决
Exception in thread "main" expected a single document in the stream
in 'reader', line 1, column 1:
server:
^
but found another document
in 'reader', line 36, column 1:
---
^
at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:111)
at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:140)
at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:524)
at org.yaml.snakeyaml.Yaml.load(Yaml.java:452)
at tomcatxpkg.sonsyefen.main(sonsyefen.java:26)
多文档快的解决
- Code
H:\gitWorkSpace\tomcatx\src\tomcatxpkg\sonsyefen.java
多文档快
Map m = YmlUtil.getDoc(ymlString, new Predicate<Map>() {
@Override
public boolean test(Map m) {
// can use ognl improve
// Map spring = (Map) t.get("spring");
// if (spring.get("profiles").equals("test"))
// return true;
try {
Object expression = Ognl.parseExpression("spring.profiles");
Object value = Ognl.getValue(expression, m);
if(value==null)
return false;
if(value.equals("test"))
return true;
} catch (OgnlException e) {
e.printStackTrace();
//if cont contain this key ,then continue
//throw new RuntimeException(e);
}
return false;
}
});
// 非根节点取值需要#开头
Object expression = Ognl.parseExpression("spring.datasource");
Object value = Ognl.getValue(expression, m); // Ognl.getValue(expression);
System.out.println(value);
- 方式二:jyaml
maven依赖添加
<dependency>
<groupId>org.jyaml</groupId>
<artifactId>jyaml</artifactId>
<version>1.3</version>
@Test
public void testJyml() {
TestEntity testEntity = null;
try {
testEntity = org.ho.yaml.Yaml.loadType(DemoApplicationTests.class.getResourceAsStream("/test.yml"), TestEntity.class);//如果是读入Map,这里不可以写Ma接口,必须写实现
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println(testEntity);
---------------------
TestEntity{age=418, name='Jack', params={event=what's up, url=http://www.test.com}, favoriteBooks=[Gone with the wind, The Little Prince]}
Java使用snakeyaml解析yaml - resentment - 博客园.mhtml
(9+条消息)java解析yml文件 - 张林强的专栏 - CSDN博客.html
Atitit java解析yml文件 以及使用 spel ognl 读取 v4 u77.docx Atitit java解析yml文件 目录 1.1. Springboot use snak相关推荐
- 利用Spring-Boot解析Excel、用Java分析Excel、告别手动输入用程序读取Excel
利用Spring-Boot解析Excel.用Java分析Excel.告别手动输入用程序读取Excel 一.资源 java读取Excel文件 二.修改 (一)中的代码中的 import service. ...
- java 解析xls 文件_java简单解析xls文件的方法示例【读取和写入】
本文实例讲述了java简单解析xls文件的方法.分享给大家供大家参考,具体如下: 读取: import java.io.*; import jxl.*; import jxl.write.*; imp ...
- java获取微信xml数据格式的文件_(5)微信二次开发 之 XML格式数据解析
1.首先理解一下html html的全名是:HyperText Transfer markup language 超级文本标记语言,html本质上是一门标记(符合)语言,在html里,这些标记是事先定 ...
- Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战
Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台- 什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...
- java docx文档解析_带有docx4j的Java Word(.docx)文档
java docx文档解析 几个月前,我需要创建一个包含许多表和段落的动态Word文档. 过去,我曾使用POI来实现此目的,但是我发现它很难使用,并且在创建更复杂的文档时对我来说效果不佳. 因此,对于 ...
- 读取ppt并存入数据库_Java解析Excel文件并把数据存入数据库
前段时间做一个小项目,为了同时存储多条数据,其中有一个功能是解析Excel并把其中的数据存入对应数据库中.花了两天时间,不过一天多是因为用了"upload"关键字作为URL从而导致 ...
- java csv文件tozip后损坏_java上传并下载以及解压zip文件有时会报文件被损坏错误分析以及解决...
情景描述: 1.将本地数据备份成zip文件: 2.将备份的zip文件通过sftp上传到文件服务器: 3.将文件服务器上的zip文件下载到运行服务器: 4.将下载的zip文件解压到本地(文件大小超过50 ...
- (五)、JAVA基于OPENXML的word文档插入、合并、替换操作系列之word文件合并[支持多文件]
(五).JAVA基于OPENXML的word文档插入.合并.替换操作系列之word文件合并[支持多文件] 二.word合并的多种方案简单比较 三.基于Open Xml WordprocessingML ...
- java读取doc、docx、ppt、pptx、xls、xlsx格式的文件
前言: 通常我们用apache 的POI库对以上文档进行操作,apache POI官网 apache POI官网 这里推荐到官网下载导入到项目,maven下载的它会缺少几个包. 格式上后缀带x(doc ...
- 2020年1-6月份Java面试题总结,20多类1100道面试题含答案解析
很多程序员都会担心35岁的职业危机,而数据也显示,40岁以上的程序员几乎不存在,大都转了管理岗,余下的只能被迫离职或者转行.然而,太久待在舒适区,可能连小公司的面试,都很难通过了. 程序员是最需要将终 ...
最新文章
- 软件外包项目管理的经验感悟
- SQL server根据值搜表名和字段
- Java设计模式(备忘录模式-解释器模式-状态模式-策略模式-职责链模式)
- 解决mysql java.sql.SQLException: The server time zone value‘XXXXXX' is unrecognized or represents...
- Mongodb数据查询 | Mongodb
- 尚学linux课程---8、rpm软件包安装
- Windows上安装Mac OS虚拟机
- Shape Number (最小表示法)
- java 面试题分析
- Cannot open precompiled header file: 'Debug/shuju1.pch': No such file or directory
- Android 设置闹铃步骤和基础代码
- spring事务失效一:非public方法
- Python 数据挖掘(四) pandas模块 简单使用
- 【MINI2440】linux系统下载全流程
- 如何将密切好友的微信聊天记录恢复到自己的微信中
- 007 锁存器和触发器
- Machine Translation and Datasets - 机器翻译与数据集(RNN循环神经网络)
- 量子计算机的相干特征,几乎不受损耗和退相干影响的量子态,旨在推动量子计算机发展!...
- B端产品:通过线上渠道增长
- Windows之内存映射文件