2016-09-29 20 views
0

YAMLファイル内のキー値の前にダッシュ(-)が必要であることが分かっています(これは私の考えです) 。 Figure 1は、YamlBeans jarを使用して生成しているYAMLを示しています。私のコードベースの場合YAMLファイルのキー値のペアの前にあるダッシュを削除します

field1: 
- childfield1: 
     datafield1: 
     param1: 
      childparam: paramvalue 
     param2: 
      childparam2: paramvalue 
     param3: 
      childparam3: paramvalue 
     datafield2: value2 

私は何とかFigure 2に示すようYAMLsを作成します(タブはYAMLファイルで各行に追加されます)、またはダッシュが削除されて削除する必要があり、変更することはできません。図1には2本の細い縦線しかないが、ブロックのアラインメントを示す図2の細い3本の垂直線があることがはっきりと分かる。

私が達成したいのは、そのファイルから最初のブロック(子フィールド)のダッシュを削除することです。 YAMLファイルリーダとライタを使用すると常にダッシュが導入されます。

+0

100%透明ではありません。 YAMLに見えるようなもの(YAML作者がほとんどのハードワークをやっているように見える)を作りたいと思っているだけですが、100%YAMLではないと仮定するのは正しいですか?また、図2(先頭のタブ)や表示されない結果(図1のように、先頭にはない)が必要ですか? –

+0

@jameygraham私は図1を望みますが、先導者はありません。これは[this](https://postimg.org/image/6onpen0xn/)のように見えます。 – naiveBayes

+0

あなたの数字は同じ数のダッシュ(1)を表示し、左マージンだけが大きく異なるため、YAMLセマンティクスで同じになります。あなたはあなたの投稿を編集し、2番目の図のテキストを含めてください(最初の図のように)。ダッシュはYAMLの新しいブロックを開始しません。そのような概念はありません。ブロックスタイルのシーケンスではなく、新しい(シーケンス)アイテムを導入します。各項目でシーケンスを使用すると、通常はキーの順序を保持するために単一のキーと値のペア(値が複雑な場合があります)が実行されます(マッピングに複数のキーがある場合)。 – Anthon

答えて

1

YamlBeansをすばやく(ただし馴染みがないとはいえ)、Emitterの動作をサブクラス化するのは簡単ではないようです。ただし、メモリに一時的なフォームを生成し、ファイルに書き出す際に結果を操作することもできます。例えば

// let YamlWriter write its contents to an in-memory buffer 
    StringWriter temp = new StringWriter(); 
    YamlWriter yamlOut = new YamlWriter(temp); 
    yamlOut.write(someObject); 

    // then dump the in-memory buffer out to a file, manipulating lines that 
    // start with a dash 
    PrintWriter out = new PrintWriter(new FileWriter(new File("someoutput.dat"))); 
    LineNumberReader in = new LineNumberReader(new StringReader(temp.toString())); 
    String line; 
    while ((line = in.readLine()) != null) { 
     if (line.startsWith("-")) { 
      line = line.substring(1); 
     } 
     out.println(line); 
    } 

私の詳細は、オフかもしれないが、うまくいけば、一時的なコピーの簡単な操作を行うためのアプローチが十分に明確です。

もし私が個人的にこれをやっていたら、私はおそらくjava.io.Writerのカスタムサブクラスを書いて、その場で操作を行います(しかし、私はYamlWriter/Emitterを十分に詳細に調べていませんでした)

+0

おかげで@jameygraham ..あなたは私の日を救った! – naiveBayes

関連する問題