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

  1. 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");

}

}

  1. 方式一: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

}

  1. 多文档快的解决
  2. 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---

  1. 问题解决

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)

多文档快的解决

  1. 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);

  1.   方式二: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相关推荐

  1. 利用Spring-Boot解析Excel、用Java分析Excel、告别手动输入用程序读取Excel

    利用Spring-Boot解析Excel.用Java分析Excel.告别手动输入用程序读取Excel 一.资源 java读取Excel文件 二.修改 (一)中的代码中的 import service. ...

  2. java 解析xls 文件_java简单解析xls文件的方法示例【读取和写入】

    本文实例讲述了java简单解析xls文件的方法.分享给大家供大家参考,具体如下: 读取: import java.io.*; import jxl.*; import jxl.write.*; imp ...

  3. java获取微信xml数据格式的文件_(5)微信二次开发 之 XML格式数据解析

    1.首先理解一下html html的全名是:HyperText Transfer markup language 超级文本标记语言,html本质上是一门标记(符合)语言,在html里,这些标记是事先定 ...

  4. Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战

    Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台-  什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...

  5. java docx文档解析_带有docx4j的Java Word(.docx)文档

    java docx文档解析 几个月前,我需要创建一个包含许多表和段落的动态Word文档. 过去,我曾使用POI来实现此目的,但是我发现它很难使用,并且在创建更复杂的文档时对我来说效果不佳. 因此,对于 ...

  6. 读取ppt并存入数据库_Java解析Excel文件并把数据存入数据库

    前段时间做一个小项目,为了同时存储多条数据,其中有一个功能是解析Excel并把其中的数据存入对应数据库中.花了两天时间,不过一天多是因为用了"upload"关键字作为URL从而导致 ...

  7. java csv文件tozip后损坏_java上传并下载以及解压zip文件有时会报文件被损坏错误分析以及解决...

    情景描述: 1.将本地数据备份成zip文件: 2.将备份的zip文件通过sftp上传到文件服务器: 3.将文件服务器上的zip文件下载到运行服务器: 4.将下载的zip文件解压到本地(文件大小超过50 ...

  8. (五)、JAVA基于OPENXML的word文档插入、合并、替换操作系列之word文件合并[支持多文件]

    (五).JAVA基于OPENXML的word文档插入.合并.替换操作系列之word文件合并[支持多文件] 二.word合并的多种方案简单比较 三.基于Open Xml WordprocessingML ...

  9. java读取doc、docx、ppt、pptx、xls、xlsx格式的文件

    前言: 通常我们用apache 的POI库对以上文档进行操作,apache POI官网 apache POI官网 这里推荐到官网下载导入到项目,maven下载的它会缺少几个包. 格式上后缀带x(doc ...

  10. 2020年1-6月份Java面试题总结,20多类1100道面试题含答案解析

    很多程序员都会担心35岁的职业危机,而数据也显示,40岁以上的程序员几乎不存在,大都转了管理岗,余下的只能被迫离职或者转行.然而,太久待在舒适区,可能连小公司的面试,都很难通过了. 程序员是最需要将终 ...

最新文章

  1. 软件外包项目管理的经验感悟
  2. SQL server根据值搜表名和字段
  3. Java设计模式(备忘录模式-解释器模式-状态模式-策略模式-职责链模式)
  4. 解决mysql java.sql.SQLException: The server time zone value‘XXXXXX' is unrecognized or represents...
  5. Mongodb数据查询 | Mongodb
  6. 尚学linux课程---8、rpm软件包安装
  7. Windows上安装Mac OS虚拟机
  8. Shape Number (最小表示法)
  9. java 面试题分析
  10. Cannot open precompiled header file: 'Debug/shuju1.pch': No such file or directory
  11. Android 设置闹铃步骤和基础代码
  12. spring事务失效一:非public方法
  13. Python 数据挖掘(四) pandas模块 简单使用
  14. 【MINI2440】linux系统下载全流程
  15. 如何将密切好友的微信聊天记录恢复到自己的微信中
  16. 007 锁存器和触发器
  17. Machine Translation and Datasets - 机器翻译与数据集(RNN循环神经网络)
  18. 量子计算机的相干特征,几乎不受损耗和退相干影响的量子态,旨在推动量子计算机发展!...
  19. B端产品:通过线上渠道增长
  20. Windows之内存映射文件

热门文章

  1. 利用vs 分析DMP文件、pdb文件定位release下的异常崩溃
  2. access字段类型varchar_Access SQL语句创建表对应的数据类型名称
  3. 数据结构详解之栈和队列
  4. 从vim转向Emacs _ emacser.com文章收集
  5. SystemVerilog中fork-join三种形式的应用
  6. 禅道---Bug管理模块
  7. 转 Java多线程中Sleep与Wait的区别
  8. AS3组件之Slider滑块拖动条
  9. cisco路由器配置DHCP实例
  10. JGit、SvnKit - 版本提交日志(1)提取