gpt4 book ai didi

c# - 如何将 XslCompiledTransform 的输出转换为 XmlReader?

转载 作者:行者123 更新时间:2023-12-04 06:52:05 24 4
gpt4 key购买 nike

我有一个 XslCompiledTransform对象,我希望输出为 XmlReader对象,因为我需要通过第二个样式表传递它。我有点困惑 - 我可以成功转换一些 XML 并使用 StreamReader 读取它或 XmlDocument ,但是当我尝试使用 XmlReader 时,我什么也得不到。

在下面的示例中,stylesheet是我的 XslCompiledTransform目的。前两个Console.WriteLine调用输出正确的转换后的 XML,但第三次调用没有给出 XML。我猜这可能是 XmlTextReader正在等待文本,所以也许我需要将其包装在 StreamReader 中..?我究竟做错了什么?

MemoryStream transformed = new MemoryStream();
stylesheet.Transform(input, args, transformed);
transformed.Position = 0;

StreamReader s = new StreamReader(transformed);
Console.WriteLine("s = " + s.ReadToEnd()); // writes XML
transformed.Position = 0;

XmlDocument doc = new XmlDocument();
doc.Load(transformed);
Console.WriteLine("doc = " + doc.OuterXml); // writes XML
transformed.Position = 0;

XmlReader reader = new XmlTextReader(transformed);
Console.WriteLine("reader = " + reader.ReadOuterXml()); // no XML written

最佳答案

XmlReader.ReadOuterXml 方法读取 的 XML当前节点 .第一次创建阅读器时,没有当前节点,所以ReadOuterXml不会返回任何东西。

如果添加以下行:

reader.Read();

...在 ReadOuterXml() 之前调用,然后它会按您的预期工作。

附言您通常应该测试 Read() 的结果方法来确保读者确实有东西要读。

关于c# - 如何将 XslCompiledTransform 的输出转换为 XmlReader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2966642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com