xml 和Xalt文件的转换
基于xml和XSLT之间的转换
代码
/// <summary>
/// 基于XML为字符,XSLT也为字符的转换
/// </summary>
/// <param name="xmlString">XML字符串</param>
/// <param name="xsltString">XSLT字符串</param>
/// <returns></returns>
public static string TransformFromString(string xmlString, string xsltString)
{
return TransformFromString(xmlString, xsltString, null);
}
/// <summary>
/// 基于XML为字符,XSLT也为字符的转换
/// </summary>
/// <param name="xmlString">XML字符串</param>
/// <param name="xsltString">XSLT字符串</param>
/// <param name="XsltArgument">参数列表</param>
/// <returns></returns>
public static string TransformFromString(string xmlString, string xsltString, NameValueCollection XsltArgument)
{
TextReader textReader = new StringReader(xmlString);
TextReader xsltReader = new StringReader(xsltString);
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = false;
XmlReader xmlReader = XmlReader.Create(textReader, settings);
XmlReader dr = XmlReader.Create(xsltReader);
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(dr);
System.IO.StringWriter stringWriter = new System.IO.StringWriter();
XsltArgumentList argsList = null;
if (XsltArgument != null)
{
argsList = new XsltArgumentList();
for (int i = 0; i < XsltArgument.Count; i++)
{
string key = XsltArgument.GetKey(i);
string value = XsltArgument.Get(i);
if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value))
argsList.AddParam(key, "", value);
}
}
xslt.Transform(xmlReader, argsList, stringWriter);
return stringWriter.ToString();
}
/// <summary>
/// 基于XML为字符,XSLT为文件的转换
/// </summary>
/// <param name="xmlString">XML字符串</param>
/// <param name="xsltFilePath">XSLT文件路径</param>
/// <returns></returns>
public static string TransformFromFile(string xmlString, string xsltFilePath)
{
return TransformFromFile(xmlString, xsltFilePath, null);
}
/// <summary>
/// 基于XML为字符,XSLT为文件的转换
/// </summary>
/// <param name="xmlString">XML字符串</param>
/// <param name="xsltFilePath">XSLT文件路径</param>
/// <param name="XsltArgument">参数列表</param>
/// <returns></returns>
public static string TransformFromFile(string xmlString, string xsltFilePath, NameValueCollection XsltArgument)
{
TextReader textReader = new StringReader(xmlString);
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = false;
XmlReader xmlReader = XmlReader.Create(textReader, settings);
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(xsltFilePath);
System.IO.StringWriter stringWriter = new System.IO.StringWriter();
XsltArgumentList argsList = null;
if (XsltArgument != null)
{
argsList = new XsltArgumentList();
for (int i = 0; i < XsltArgument.Count; i++)
{
string key = XsltArgument.GetKey(i);
string value = XsltArgument.Get(i);
if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value))
argsList.AddParam(key, "", value);
}
}
xslt.Transform(xmlReader, argsList, stringWriter);
return stringWriter.ToString();
}
}