Недопустимые символы в пути при загрузке XSLT-документа - PullRequest
0 голосов
/ 27 сентября 2019

Я создаю метод для возврата строки HTML в результате преобразования XSLT.

Когда я запускаю следующий код, я получаю сообщение об ошибке «Недопустимые символы в пути» в следующей строке: xsltTransform.Load(xsltTemplate).

Примечание. Я протестировал XSLT-преобразование с помощью другого метода, и он работает.

private string FormatCreditReport(string inputXml)
{
    var xsltTransform = new XslCompiledTransform();
    var webRootPath = HostingEnvironment.ApplicationPhysicalPath;
    var path = webRootPath
               + "XSLT_Stylesheets"
               + Path.DirectorySeparatorChar
               + "CreditReportTransform.xslt";
    var xsltTemplate = File.ReadAllText(path);

    xsltTransform.Load(xsltTemplate);

    StringWriter results = new StringWriter();
    using (var reader = XmlReader.Create(new StringReader(inputXml)))
    {
        xsltTransform.Transform(reader, null, results);
    }
    return results.ToString();
}

XSLT-документ:

  <table border ="1">

    <tr>
      <th><h2>Credit File</h2></th>
    </tr>
    <tr></tr>
    <tr>
      <td>File Since Date</td>
      <td><xsl:value-of select="EfxTransmit/EfxReport/USConsumerCreditReports/USConsumerCreditReport/USHeader/CreditFile/FileSinceDate"/></td>
    </tr>
    <tr>
      <td>Date of Last Activity</td>
      <td><xsl:value-of select="EfxTransmit/EfxReport/USConsumerCreditReports/USConsumerCreditReport/USHeader/CreditFile/DateOfLastActivity"/></td>
    </tr>
    <tr>
      <td>Date of Request</td>
      <td><xsl:value-of select="EfxTransmit/EfxReport/USConsumerCreditReports/USConsumerCreditReport/USHeader/CreditFile/DateOfRequest"/></td>
    </tr>

    <tr></tr>

    <tr>
      <th><h2>Subject</h2></th>
    </tr>
    <tr>
      <td>Last Name</td>
      <td><xsl:value-of select="EfxTransmit/EfxReport/USConsumerCreditReports/USConsumerCreditReport/USHeader/Subject/LastName"/></td>
    </tr>
    <tr>
      <td></td>
      <td></td>
    </tr>
  </table>

1 Ответ

1 голос
/ 27 сентября 2019

Нет необходимости вызывать File.ReadAllText (путь).Просто передайте полный путь к файлу следующим образом:

'var xsltTemplate = File.ReadAllText(path);
xsltTransform.Load(path);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...