当我调用XslCompiledTransform类的Transform方法时,我收到“路径中的非法字符”异常。
这是我的代码:
// Maybe there is a problem in this path
string xsltPath = @"..\..\HtmlAttributesParser.xslt";
XslCompiledTransform xsltCompiled = new XslCompiledTransform();
xsltCompiled.Load(xsltPath, new XsltSettings(false, true), new XmlUrlResolver());
StringBuilder output = new StringBuilder();
xsltCompiled.Transform(content, XmlWriter.Create(output));
没有*? “<> |在我的路径中,所以我想知道为什么我会得到这个例外。
关于Exception消息,我的内容var的值与此异常之间没有关联吗?
编辑:以下是适用于在线XSLT测试人员的内容
<div class="pk-link">
<a href="/STORE/Pages/myPage.aspx" url="/STORE/Pages/myPage.aspx" width="" heigth="" target="_blank">
<img border="0" src="/link_download.gif"/>
Download
</a>
</div>
答案 0 :(得分:9)
如果您有一个包含XML输入的字符串,那么您需要使用Transform
方法的重载,期望创建XmlReader
或XPathDocument
(或更一般地IXPathNavigable
)超过那个字符串,例如
string result;
using (StringReader sr = new StringReader(content))
{
using (XmlReader xr = XmlReader.Create(sr))
{
using (StringWriter sw = new StringWriter())
{
xsltCompiled.Transform(xr, null, sw);
result = sw.ToString();
}
}
}
将字符串作为第一个参数的Transform方法的重载需要文件路径或URL,而不是XML输入。