模板引擎Nvelocity例項

2022-02-18 07:53:14 字數 2680 閱讀 8310

最近一直忙於工作,沒時間來管理部落格,同時電腦也不給力,壞了一陣又一陣,最後還是去給修理了,這不剛一回來迫不及待的就寫一篇文章來滿足兩個月未寫部落格的緊迫感。

關於nvelocity就不再過多介紹,這樣的文章已經太多太多,我只是將其封裝起來用用,其中遇到的問題也會在其中一一進行講解。為什麼會用到該模板引擎是因為要定義不同的格式來進行後續的列印,關於列印後續有時間也和大家講解講解,關於列印可以透露一點,有想到過用現成比如園友伍華聰大大介紹的lodop,這款列印還是非常的強大,雖然有免費版,但是也就供學習用,在實際專案中還是要用到比較複雜的列印api,於是乎就得去寫了,這個過程幸好有基本的**供參考,還是學到不少有關列印的知識,無論是在餐廳還是在肯德基等地方都會有列印的小票,之前沒怎麼去在意過,直到自己遇到要實現這樣的列印以及對應的格式在去仔細研究研究,其過程也是受益匪淺。

好,話說了這麼多,我們開始進入主題,分割線

實現內容:需要將資料放到xml檔案中然後將其反序列化為物件進行後續的傳輸。。。

如下直接給出封裝的nvelocity。

public

class

nvelocityengine

private

static mutex _mutex = new

mutex();

private

static

nvelocityengine _meobj;

public

static

nvelocityengine create()

public

string gethtml(icontext context, string

templatepath)}}

public

class

nvelocitypage

public

void add(string key, object

value)

public

string

writehtml()

catch

(exception e)}}

接下來則是需要反序列化為物件的幾個類,命名比較粗糙,將就點看吧。

[xmlroot("

table")]

public

class

table

}public

class

tr

}public

class

td

}

<?xml version="

1.0" encoding="

utf-8

" ?>

#foreach($d in

$list)

"$d.age

"/>

#end

測試類:

var list = new list()

,new person(),

new person(),

new person()

};var nvelocitypage = new nvelocitypage("

table.xml");

nvelocitypage.add(

"list

", list);

var tablexml =nvelocitypage.writehtml();

var memorystream = new

memorystream(system.text.encoding.utf8.getbytes(tablexml));

var xmlserializer = new xmlserializer(typeof

(table));

var table = (table)xmlserializer.deserialize(memorystream);

結果如下:

反串行為物件時沒有正確,估計是在寫xml特性有問題結果進行如下修改即可。

將上述

[xmlarrayitem(typeof(tr), elementname = "

tr")]

修改為如下:

[xmlarray("tr"

)] [xmlarrayitem("tr

")]

同理進行修改則如我們所期望,結果則不再演示。在其過程中在利用記憶體流進行反序列化時建議進行如下設定

memorystream.position = 0;
之前未進行設定則出現如下錯誤,後來又未出現,不明白是怎麼情況

xml 文件(0, 0)中有錯誤。缺少根元素
至此,我們利用模板引擎進行資料替換接著進行載入到記憶體中反序列化為物件就已結束。

之前未接觸過將輸出的xml資料利用xml特性來進行反序列化為物件,也花了一點時間去看這方面的東西,本以為只能通重載入xml檔案來進行反序列化,未曾想到這樣也是可以的,多次嘗試才最終完成任務,每一次的實際專案應用需要才會使我學習到更多且了解的更透徹。今天寫這篇文章腦子也是懵的,終於寫完,只是為了兩個月未寫部落格做乙個新的開始,後續會陸續講解專案當中學到的新的知識,希望對閱讀本文的你有所啟發和幫助,當然文章難免有錯誤之處、表述不清之處請指出或者錯別字,我好及時的修改和完善。

NVelocity模板引擎

因此決定自學一下nvelocity的使用 拋開monorail 安裝後,在其下的bin目錄中可找到nvelocity.dll net專案中將用到 並將其複製出來放到我的測試web bin目錄下。到castleproject上看了一下using it大致有四步 先要引入以下命名空間 using com...

NVelocity模板引擎

簡介 nvelocity是乙個基於.net的模板引擎 template engine 它允許任何人僅僅簡單的使用模板語言 template language 來引用由.net 定義的物件。語法 include head.htm 引入檔案 parse head.htm 引入檔案,與include不同的...

NVelocity 模板引擎筆記

模板引擎載入 velocityengine vltengine new velocityengine vltengine.setproperty runtimeconstants.resource loader,file vltengine.init velocitycontext vltconte...