使用JYaml实现对Yaml文档的解析

今天尝试了下使用JYaml类库解析Yaml文档。

现有Yaml文档.travis.yml如下:

language: java
sudo: false
cache:
  directories:
    - $HOME/.m2
jdk:
  - oraclejdk8
  - oraclejdk7
  - openjdk7
script:
  - mvn clean install -Pqulice --errors --batch-mode

使用JYaml类库中的函数 YamlStream org.ho.yaml.Yaml.loadStream(File arg0) 可以将yml文档中内容读取到流中。

Java代码如下:

import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.ho.yaml.Yaml;
import org.ho.yaml.YamlStream;

/**
 * 
 * @author Tsybius2014
 * @date 2016年3月2日
 * @time 下午10:35:50
 * @remark
 *
 */
public class JyamlTest {
    /**
     * 使用JYaml解析YAML文档
     * @param args
     */
    @SuppressWarnings("rawtypes")
    public static void main(String[] args) {
        try {
            File file = new File(".travis.yml");
            YamlStream stream = Yaml.loadStream(file);
            for (Iterator iter = stream.iterator(); iter.hasNext();) {
                HashMap hashMap = (HashMap) iter.next();
                // System.out.println(hashMap);
                for (Iterator iter2 = hashMap.entrySet().iterator(); iter2.hasNext();) {
                    Map.Entry entry = (Map.Entry) iter2.next();
                    Object key = entry.getKey();
                    Object value = entry.getValue();
                    System.out.println("key's type = " + key.getClass());
                    System.out.println("value's type = " + value.getClass());
                    System.out.println("key = " + key + ", value = " + value);
                    System.out.println("=================================");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

文档读取到一个HashMap中,每个key都是一个字符串,每个value视yaml文档实际情况而定。

上面的代码输出结果为:

key's type = class java.lang.String
value's type = class java.util.ArrayList
key = jdk, value = [oraclejdk8, oraclejdk7, openjdk7]
=================================
key's type = class java.lang.String
value's type = class java.util.HashMap
key = cache, value = {directories=[$HOME/.m2]}
=================================
key's type = class java.lang.String
value's type = class java.lang.String
key = language, value = java
=================================
key's type = class java.lang.String
value's type = class java.lang.Boolean
key = sudo, value = false
=================================
key's type = class java.lang.String
value's type = class java.util.ArrayList
key = script, value = [mvn clean install -Pqulice --errors --batch-mode]
=================================

END

你可能感兴趣的:(解析,yaml,jyaml,yml)