2017-10-21 79 views
2

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

+0

看起来他们希望你做[XsltCompiledTransform](https://msdn.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform(v = vs.110).aspx),但没有一个缩小的例子,一个[MCVE],并试图从你这个问题是太宽泛无法回答。如果您将我们链接到您使用的服务提供商文档,它可能会有所帮助。 – rene

回答

0

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

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


1.添加样式

有由web服务提供者提供选项,即我有通过使用样式表

这是添加一行[...]如在web浏览器中xml和显示器的第二线使用例如Linq,如this answer。所有的 首先,我想你使用的示例中,即

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

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

使用Web服务提供

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

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

让我们假设你已经在你的XML存储到一个名为“文档”,其根元素是“根”

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

XDocument变量然后你就可以添加你的样式表这种方式,获得一个新的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。
让我知道你是否需要更多细节。

+0

谢谢......这就是我要找的...谢谢你指导我...... – MSK

+0

没问题,问你是否需要别的东西。 –