来自字符串内容的XMLReader

mat*_*t99 51 c# xml xslt

我正在尝试使用XslTransform从另一个XML生成XML.我将这两个文件(源XML和XSL转换文件)作为字符串内容,所以我试图将XSL文件作为XmlReader传递给XslTransform.Load()方法.现在必须从包含XSL文件的源字符串创建XmlReader,所以我尝试这样做:

MemoryStream memStream = new MemoryStream();
byte[] data = Encoding.Default.GetBytes(transformation.XsltContent);
memStream.Write(data, 0, data.Length);
memStream.Position = 0;
XmlReader reader = XmlReader.Create(memStream);
Run Code Online (Sandbox Code Playgroud)

并尝试使用StringReader:

XmlReader reader = XmlReader.Create(new StringReader(transformation.XsltContent));
Run Code Online (Sandbox Code Playgroud)

不幸的是,bot方法似乎不起作用,输入似乎没问题,我甚至尝试创建一些基本的单元素XML来传递,也不会工作 - 读者包含{None}.

有人能指出这里似乎有什么问题吗?

bhu*_*ng3 114

XmlReader xmlReader = XmlReader.Create(new StringReader(YourStringValue));

  • 您应该使用`using`处理该StringReader. (12认同)
  • 来自 [StringReader 的文档](https://docs.microsoft.com/en-us/dotnet/api/system.io.stringreader?view=netcore-2.2):“此类型实现了 IDisposable 接口,但不实际上有任何资源需要处置。这意味着不需要通过直接调用 Dispose() 或使用诸如 using(在 C# 中)或 using(在 Visual Basic 中)等语言构造来处置它。 (5认同)
  • @NikolaMalešević在处理`XmlReader`时它不会被处理掉? (3认同)

fej*_*oco 31

StringReader - > XmlReader方法很好,你应该坚持下去.读者报告没有,因为它尚未被阅读.尝试在其上调用Read()以查看当时会发生什么.转换也将调用read.

  • 请记住:XmlReader和StringReader实现IDisposable. (2认同)