C#Webservice响应xml显示为pdf

时间:2017-10-21 07:50:49

标签: c# xml web-services

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

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你想:

  1. 将样式表规范添加到现有XML
  2. XML转换为PDF
  3. <小时/> 的 1。添加样式表

      

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

    这是使用例如Linq,就像this answer一样。 首先,我认为你使用的例子,即

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

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

      

    使用webservice provider

    提供的样式表

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

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

    假设您已将XML存储到名为&#34; Document&#34;的XDocument变量中。其根元素为&#34; Root&#34;

    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。 如果您需要更多详细信息,请与我们联系。