代码之家  ›  专栏  ›  技术社区  ›  Dragouf

yamdocument到文本的表示以3点结尾

  •  0
  • Dragouf  · 技术社区  · 6 年前

    当我这样做的时候:

    var root = new YamlMappingNode();
    var doc = new YamlDocument(root);
    root.Add("one", "two");
    var stream = new YamlStream(doc);
    var buffer = new StringBuilder();
    using (var writer = new StringWriter(buffer))
    {
      stream.Save(writer, false);
      var t = buffer.ToString();
    }
    

    我得到:

    one: two
    ...
    

    为什么文件的末尾有3个点?

    1 回复  |  直到 6 年前
        1
  •  2
  •   spender    6 年前

    所以 YamlStream 用于将多个yaml文档流式传输到单个流中,因此它编码标记以指示文件的两个结尾( --- )和河流的尽头( ... )如果你只是序列化一个文档,你可能不想要这个。

    相反,使用 Serializer 将节点写入 StreamWriter (被一个( File ) Stream ):

    var serializer = new Serializer(); //YamlDotNet.Serialization.Serializer
    using (var fs = File.OpenWrite("some/path.yaml"))
    using (var sw = new StreamWriter(fs))
    {
        serializer.Serialize(sw, doc.RootNode);
    }