c# - 转换 XML 时路径异常中的非法字符

标签 c# xml xslt transformation

我正在从一个文件加载 XML,然后我想用 XSLT 将它转换为 HTML。为此,我使用带有 2 个字符串作为参数的 Transform 重载,因此我将 XML 转换为字符串。 (XSL 正在工作 - 单独检查)。但是当我尝试运行它时 - 我在 .Transform() 方法的 result 参数处遇到异常。

XmlDocument xml = new XmlDocument();
XslCompiledTransform xsltTrans = new XslCompiledTransform();
string htmlResult = "test";
string xmlContents;

private string getXMLAsString(XmlDocument myxml)
{

    StringWriter sw = new StringWriter();
    XmlTextWriter tx = new XmlTextWriter(sw);
    myxml.WriteTo(tx);

    string str = sw.ToString();
    return str;
} 

public String getHTMLresult()
{
    xml.Load(@"L:\ProjectGroup\GK\XML documents\Parent-Child.xml");
    xmlContents = getXMLAsString(xml);
    xsltTrans.Load(@"L:\ProjectGroup\GK\XML documents\blah.xsl");
    xsltTrans.Transform(xmlContents, htmlResult); 
    return htmlResult;
}

是不是因为htmlResult已经有值了?但是,如果我将其留空,或将其设置为 null,则会出现异常 null values are not allowed。那我该如何解决这个非法字符的问题呢?

最佳答案

这是尽可能短的版本,试试看:

XslCompiledTransform xsltTrans = new XslCompiledTransform();
string htmlResult;
string xmlContents = @"L:\ProjectGroup\GK\XML documents\Parent-Child.xml";

public String getHTMLresult()
{
    xsltTrans.Load(@"L:\ProjectGroup\GK\XML documents\blah.xsl");
    StringWriter sw = new StringWriter();
    XmlTextWriter xw = new XmlTextWriter(sw);
    xsltTrans.Transform(xmlContents, null, xw);
    htmlResult = sw.ToString();
    return htmlResult;
}

关于c# - 转换 XML 时路径异常中的非法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18334161/

相关文章:

c# - 坚持泛型和接口(interface)。需要基于代码的解决方案,可能需要重新设计接口(interface)

sql-server - 如何从包含 xml 命名空间的 XML 列中获取数据 (SQL Server 2005)

iphone - xml 解析器中奇怪的 iPhone 内存泄漏

c - 用 C 解析 XML

xml - XSLT - 数字验证

c# - 如何在单击按钮并验证后调用使用 ajax 的 asp.net mvc 表单提交事件?

c# - 如何用字符串值定义枚举?

c# - 绑定(bind) RowCommand 以在单击一行中的任何单元格时触发

XSLT 删除属于命名空间的标签/属性

xslt - 资源说明 XSLT 处理路径