1

当我调用 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));

没有 * 吗?“ < > | 在我的路径中,所以我想知道为什么我会得到这个异常。

关于异常消息,我的内容变量的值与此异常之间没有联系,对吗?

编辑:这是适用于在线 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>
4

1 回答 1

10

如果您有一个带有 XML 输入的字符串,那么您需要使用该Transform方法的重载,期望在该字符串上创建一个XmlReaderor 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 输入。

于 2012-08-08T10:26:58.930 回答