我正在尝试实现一些使用XslCompiledTransform将一个对象转换为另一个对象的函数。
我找到了一些将对象序列化为XML和将DeSerialize字符串序列化为对象的实现。
另一个函数执行XslCompiledTransform (从object1到obejbct2 )。
为了生成XSLT文件,我使用了Altova MapForce,只是加载了序列化对象的XML并映射了一些属性。
现在我们来谈谈问题:
以下是功能:
private static string runXSLT(string xsltFile, string inputXML)
{
XmlDocument XmlDoc = new XmlDocument();
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform(true);
xslt.Load(xsltFile);
StringReader StrReader = new StringReader(inputXML);
XmlTextReader XmlReader = new XmlTextReader(StrReader);
//Create an XmlTextWriter which outputs to memory stream
Stream stream = new MemoryStream();
XmlWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
// Execute the transform and output the results to a file.
xslt.Transform(XmlReader, writer);
stream.Position = 0;
XmlDoc.Load(stream);
return XmlDoc.InnerXml;
}
public static string SerializeAnObject(object AnObject)
{
XmlDocument XmlDoc = new XmlDocument();
DataContractSerializer xmlDataContractSerializer = new DataContractSerializer(AnObject.GetType());
MemoryStream MemStream = new MemoryStream();
try
{
xmlDataContractSerializer.WriteObject(MemStream, AnObject);
MemStream.Position = 0;
XmlDoc.Load(MemStream);
return XmlDoc.InnerXml;
}
finally
{
MemStream.Close();
}
}
public static Object DeSerializeAnObject(string XmlOfAnObject, Type ObjectType)
{
StringReader StrReader = new StringReader(XmlOfAnObject);
DataContractSerializer xmlDataContractSerializer = new DataContractSerializer(ObjectType);
XmlTextReader XmlReader = new XmlTextReader(StrReader);
try
{
Object AnObject = xmlDataContractSerializer.ReadObject(XmlReader);
return AnObject;
}
finally
{
XmlReader.Close();
StrReader.Close();
}
}谢谢分配,
奥姆里。
发布于 2009-08-17 15:06:22
XslCompiledTransform不支持XSLT2.0。事实上,XSLT2.0在.NET框架中根本不受支持(您可以尝试.NET的Saxon,但要知道这只是运行在IKVM中的Java )。从您的描述来看,的类型安全性。
https://stackoverflow.com/questions/1288410
复制相似问题