2010-02-24 178 views
7

我对使用StringTemplate模板引擎写入类似于嵌套循环的东西感兴趣。 在C#中有一个HashTable,其中每个Key都包含Document对象列表,每个Document都有一个标题和源文件。我想在电子邮件的开始处列出每个来源的文档标题摘要。StringTemplate中的嵌套循环

<h1>Summary</h1> 
<h2>Source A</h2> 
<ul> 
    <li>title 1</li> 
    <li>title 2</li> 
</ul> 
<h2>Source B</h2> 
<ul> 
    <li>title 3</li> 
    <li>title 4</li> 
</ul> 

用StringTemplate完成此操作的最佳方法是什么?

回答

11

假设您已经转化这些以适当的数据结构 - 有getNamegetDocuments方法Source类,并具有getTitle方法Document类,它看起来像这样:

$ 
sources: 
{ 
    source| 
    <h2>Source $source.name$ </h2> 
    $ 
    source.documents: 
    { 
     document| 
     <li>title $document.title$</li> 
    } 
    $ 
} 
$ 
+0

这是一般的对象一个很好的答案,但没有w^ork for HashTable。 – 2010-03-25 10:12:46

+1

你能告诉我一个你的散列表和文档对象的样子吗?使用散列表,你可以使用'ht.keys:{k | something}'语法。 – viaclectic 2010-03-25 12:18:39