2013-08-20 45 views
2

我从文件中加载XML,然后我想用XSLT将其转换为HTML。为此,我使用2个字符串作为参数的变换重载,因此我将XML编码为字符串。 (XSL正在工作 - 单独检查)。但是当我尝试运行它时 - 我在.Transform()方法的result参数中得到了例外。转换XML时路径异常中的非法字符

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。那么我怎样才能解决这个问题与非法字符?

+0

@Heslacher - 啊,我现在明白了。谢谢。 :) – Syspect

回答

1

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

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; 
} 
相关问题