代码之家  ›  专栏  ›  技术社区  ›  Mark Seemann

如何从xdocument轻松获取文本阅读器?

  •  5
  • Mark Seemann  · 技术社区  · 16 年前

    给定一个xdocument实例,我如何能够轻松地获得表示该实例的TextReader?

    我能想到的最好的办法就是 xml 是xdocument实例):

    var s = new MemoryStream();
    var sw = new StreamWriter(s);
    
    xml.Save(sw);
    
    sw.Flush();
    s.Position = 0;
    
    TextReader tr = new StreamReader(s);
    

    然而,这似乎有点笨拙,所以我想知道是否有一个更简单的方法?


    编辑

    上面的示例相当于将整个实例转换为XML字符串,然后在该字符串上创建一个文本阅读器。

    我只是想知道是否有一种更像流的方式来做这件事,而不是把所有的内容都读到记忆中。

    2 回复  |  直到 16 年前
        1
  •  4
  •   Daniel Elliott    16 年前
      TextReader tr = new StringReader(xml.ToString());
    

    仁慈,

        2
  •  0
  •   Sven Künzler    16 年前

    我没试过,但有个方法 XNode.WriteTo(XmlWriter) . 你可以通过一个 XmlTextWriter 获取文本表示。这可能需要更多的代码 写,但它应该更像您请求的“流式”:-)

    [编辑:] XNode.CreateReader() 这给了你一个 XmlReader . 您只需自己处理文本转换。

    推荐文章