【问题标题】:C# Webservice response xml displaying as pdfC# Webservice 响应 xml 显示为 pdf
【发布时间】:2017-10-21 07:50:48
【问题描述】:

我是 C# Web 开发的新手。我正在开发一个以 XML 格式从 web 服务接收响应的软件。 (包括网络服务生成的条形码)。 网络服务提供商提供了一个选项,我必须添加一行 (例<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">) 作为 xml 中的第二行,并使用 Web 服务提供商提供的样式表显示在 Web 浏览器中。如果我必须选择此选项,我如何将该行添加为接收到的 xml 文件中的第二行,以及如何映射该 xml 项目中 web 服务提供的样式表。 如果我不选择该选项,如果我不选择该选项,是否可以将 xml 中的数据显示为 pdf(包括 web 服务生成的条形码)。

【问题讨论】:

  • 看起来他们希望你做一个XsltCompiledTransform,但没有按比例缩小的例子,一个minimal reproducible example,你这个问题太宽泛了,无法回答。如果您将我们链接到您使用的服务提供商文档,这可能会有所帮助。

标签: c# xml web-services


【解决方案1】:

如果我正确理解您的问题,您希望:

  1. 向现有 XML 添加样式表规范
  2. XML 转换为 PDF


1。添加样式表

Web 服务提供商提供了一个选项,我必须在 xml 中添加一行 [...] 作为第二行并使用样式表在 Web 浏览器中显示

这是使用例如完成的。 Linq,如this answer。 首先,我认为您使用的示例,即

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

可能不准确,因为它是 XSL 文件(样式表)的第一行;这类文件用于将 XML 转换为另一个文件(不同的 XML 或 HTML,如您的情况)。但是,你说

使用网络服务提供商提供的样式表

所以我的猜测是您已经拥有这些样式表并且您可以使用它们,而不是自己创建它们。 如果是这样,您要添加的行就像

<?xml-stylesheet type="text/xsl" href="helloWorld.xsl"?>

假设您已经将 XML 存储到名为“Document”的 XDocument 变量中,其根元素为“Root”

var FilePath = "Example.xml";
var Document = XDocument.Load(FilePath);
var Root = XDocument.Descendants("Root").Single();

然后你可以通过这种方式添加你的样式表,得到一个新的 XML:

var NewDocument = new XDocument(
     new XProcessingInstruction("xml-stylesheet", "type='text/xsl'ref='helloWorld.xsl'"),
     Root);


2。 XML 转 PDF

有几种方法可以做到这一点。
您可以解析 XML,检索要在 PDF 上显示的元素,使用 iTextSharp 之类的库来创建特定布局并将其内容放在文件中。
或者,由于您已经有一个 XML,并且您可以使用 XSL 将其转换为 HTML,您可以使用 wkHtmlToPdf。
如果您需要更多详细信息,请告诉我。

【讨论】:

  • 谢谢...这就是我要找的...谢谢您指导我...
  • 没问题,请问您是否需要别的东西。
猜你喜欢
  • 1970-01-01
  • 2015-06-07
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 2011-08-16
  • 1970-01-01
相关资源
最近更新 更多