2009-07-16 35 views
2

我一直負責從繼承的測試報告工具轉換某些文本日誌文件。該工具是一個編譯的C#(.NET 3.5)應用程序。將日誌文件轉換爲XML和(X)HTML,建議

我想解析並將一組邏輯連接的日誌文件轉換爲單個XML報告文件,這不是問題。 System.Xml類很容易使用。

但是,我也想創建一個更「可讀」的文件來陪伴每個報告。我選擇了HTML,並且因爲我喜歡標準化,所以我寧願使用適當的XHTML。

我的問題是我該如何去創建HTML文件以及XML報告?我最初的想法是構建XML文件,然後使用LINQ和簡單的StreamWriter在我的C#代碼中構建一個HTML文件。我也可以使用XSLT而不是LINQ來簡化C#代碼。但是由於我必須編譯這個,所以我不喜歡將其他文件添加到安裝/發行版的想法。

正在使用LINQ會導致我的任何問題,而不是XSLT?是否有符合XHTML的用於.NET的任何漂亮的HTML編寫庫?既然我已經從工作內存中的日誌文件中解析了所有內容,是否有一種簡單的方法可以輕鬆地同時創建兩個文件?

回答

4

我會創建一個xslt轉換,並針對XML運行該轉換。 Linq確實不會將一個模式(例如您的報告)的XML轉換爲另一個(例如xhtml)。你可以強制它,但xslt是一個很好的方法來做到這一點。

+0

謝謝,那麼我將使用XSLT。從所有的答案聽起來肯定是最好的解決方案。 – cgyDeveloper 2009-07-16 19:01:08

4

我實際上會推薦使用XSL轉換。由於您已經擁有XML文檔。如果你寫一個很好的XSL轉換,你會得到很好的結果。

http://www.w3schools.com/xsl/xsl_transformation.asp

小片段:

XslCompiledTransform xsl = new XslCompiledTransform(); 


    xsl.Load(HttpContext.Current.Server.MapPath(xslPath)); 

    StringBuilder sb = new StringBuilder(); 
    using (TextWriter tw = new StringWriter(sb)) 
    { 
     // Where the magic happens 
     xsl.Transform(xmlDoc, null, tw); 


     //return of text which you could save to file... 
     return sb.ToString(); 
    } 
+0

那麼我假設轉換方法只是將樣式表頭部放入XML文件中?是對的嗎? – cgyDeveloper 2009-07-16 19:02:46

2

與使用XSLT的一個好處是,你可以在它告訴用戶的瀏覽器如何生成報告的XML的上面放一個處理指令本身:

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

這樣你就不必有一個單獨的步驟來生成報告。用戶只需在瀏覽器中直接打開XML文件,但他們會看到生成的報告。