2017-10-21 58 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

沒問題,問你是否需要別的東西。 –