【发布时间】:2010-03-30 21:02:28
【问题描述】:
我有以下接受文件名的变量:
var xtr = new XmlTextReader(xmlFileName) { WhitespaceHandling = WhitespaceHandling.None };
var xd = new XmlDocument();
xd.Load(xtr);
我想更改它以便可以传入一个对象。我不想先将对象序列化到文件中。
这可能吗?
更新:
我的初衷是取一个xml文档,合并一些xslt(存储在一个文件中),然后输出返回html……像这样:
public string TransformXml(string xmlFileName, string xslFileName)
{
var xtr = new XmlTextReader(xmlFileName) { WhitespaceHandling = WhitespaceHandling.None };
var xd = new XmlDocument();
xd.Load(xtr);
var xslt = new System.Xml.Xsl.XslCompiledTransform();
xslt.Load(xslFileName);
var stm = new MemoryStream();
xslt.Transform(xd, null, stm);
stm.Position = 1;
var sr = new StreamReader(stm);
xtr.Close();
return sr.ReadToEnd();
}
在上面的代码中,我正在从文件中读取 xml。现在我想做的只是在对象被序列化到文件之前使用它。
让我用代码来说明我的问题
public string TransformXMLFromObject(myObjType myobj , string xsltFileName)
{
// Notice the xslt stays the same.
// Its in these next few lines that I can't figure out how to load the xml document (xd) from an object, and not from a file....
var xtr = new XmlTextReader(xmlFileName) { WhitespaceHandling = WhitespaceHandling.None };
var xd = new XmlDocument();
xd.Load(xtr);
}
【问题讨论】:
-
我没有按照你的想法去做,你能发布一个更好的例子吗?
-
更改what 以便您可以传入一个对象? XmlTextReader?要将对象传递给 XmlTextReader?你希望得到什么?
-
@JL:你不应该使用
new XmlTextReader()。你应该改用XmlReader.Create()。 -
@Cheeso,我想从一个对象而不是文件中加载 xd(XMLDocument),XMLTextReader 对我来说并不重要。
-
@John,为什么新的 XMLTestReader 不好?