【问题标题】:How to get a Stream from an XMLWriter?如何从 XMLWriter 获取流?
【发布时间】:2011-03-30 12:16:02
【问题描述】:

System.Xml.XmlWriter 的实例正在写入底层 Stream 对吗?(不管 XmlWriter 的具体实现是什么)

那么为什么没有可供程序员从 XmlWriter 中检索 Stream 对象的方法呢?

我确定我错过了一些简单的东西。提前致谢。

PS:如果有人问,我真正想做的是从传递给我的 XmlWriter 实例中获取流,并从中创建一个 XmlReader(如果需要,请先刷新 Writer)。

然后我需要使用 XmlReader 作为XslCompiledTransform.Transform 方法的参数

编辑:标点符号

【问题讨论】:

    标签: .net stream xmlwriter


    【解决方案1】:

    你不应该这样做。即使您知道XmlWriter 下面有一些Stream,但这是实现细节,XmlWriter 不应该给您。流也可能是只读的或只写的,你将如何从中读取?

    如果您知道流可以被写入和读取,您应该将用于实例化XmlWriter 的原始流传递到要读取流的位置。否则你应该创建一个新的流来读取XmlWriter写的内容。

    【讨论】:

    • > 你不应该这样做。反正我好像不行。但是您的解释是有道理的:不能保证可以从中读取流。感谢那。 > 否则你应该创建一个新的流来读取 XmlWriter 写入的内容。我还在为如何做到这一点而苦苦挣扎?
    • @K_M,这取决于您如何为XmlWriter 创建该流 - 这是这里的关键点。
    • JIM 编译器,我传递了一个 XmlWriter 实例,所以我不会提前知道 Stream 是如何创建的。也许设计有缺陷。但就这样我就直截了当地说 - 那么不可能从 XmlWriter 中获取 Stream(新的或其他的)吗?这意味着,给定一个 XmlWriter,没有办法创建一个具有相同数据的 XmlReader? (对不起,我跑题了。如果它违反了stackoverflow的礼仪,请告诉我)。感谢您到目前为止的回复。
    • @K_M,不要认为这是一个离题的话题。您可以尝试将传递的XmlWriter 转换为其真正的实现类(XmlWriter 是抽象的),您必须知道XmlWriter 的哪些实现可能会传递给您。一些XmlWriter的继承者,比如XmlTextWriter,暴露传过来的流(XmlTextWriter.BaseStream属性),你可以试试,我没试过。这将是一个重大的黑客攻击,但如果你真的需要它......
    • JIM 编译器,我只接受 XmlTextWriter 而不是它的基类 XmlWriter 是有意义的。从那里我可以使用 BaseStream 属性,并从中创建一个新的 XmlReader。问题解决了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 2020-11-27
    • 2016-06-22
    • 1970-01-01
    相关资源
    最近更新 更多