使用C#进行有效的自定义标签解析#

问题描述:

我目前正在玩弄我拥有的CMS创意。它基于MonoRail,NHibernate堆栈。我知道那里已经有一百万个CMS解决方案。这对我尝试一些新东西的好处更多。使用C#进行有效的自定义标签解析#

无论如何,管理方面的事情进展良好,全流程的插件架构,但我已经打了一些道具与前端模板管理方面的事情。

我想要做的是让开发人员编写自己的自定义标签,例如

<cms:news> 
    <h1><cms:news:title /></h1> 
    <p><cms:news:date /></p> 
    <cms:news:story /> 
</cms:news> 

我相信这会给开发者很大的灵活性。

我正在努力的部分是解析这些标签。我可以使用反射,但是我担心这可能对每一页都是相当密集的。有没有其他人做过这样的事情,有更好的解决方案?

对不起,信息家伙。这里有更多信息给你。

上述代码将位于CMS的“页面”中。完整的页面标记只是一个数据库记录。

一旦解析器命中那里标签,然后需要处理它们将其转换为内容。在解析上面的例子就按CMS:新闻标签并拨打电话,以这样的

public void news() 
{ 
    // Get all of the news articles from the database 
} 

CMS中的功能:新闻:标题(或CMS:news.title)标签会叫这样的功能

public string newstitle() 
{ 
    // Return the news title for the current news element we are rendering 
} 

希望这是现在更有意义

感谢

约翰

+1

我们需要更多的上下文:这些标签在哪里? .aspx页面?还是你自己处理html/xml?你是否已经解析了html/xml?怎么样?的System.Xml?你会如何使用反射?什么? – 2009-09-24 08:40:23

我想我一直在看这一切都是错误的。

我基本上可以做到这一点,我使用类似Spark View Engine的InMemoryViewFolder和使用ViewComponents自定义标签。

个你考虑到使用的标签是不是有效的XML:你不能有多个冒号的元素名称(只有一个命名空间与本地名称分开)

考虑这个:

<cms:news> 
    <h1><cms:news.title /></h1> 
    <p><cms:news.date /></p> 
    <cms:news.story /> 
</cms:news> 

解析这个XML,有许多可用的选项给你:

  • 的XmlReader
  • 的XmlDocument
  • 的XDocument(LINQ到XML)

我不认为XML序列做的是一个选项,如果标签是可定制的......

,无论如何,我不知道你想达到什么......会是什么你使用这些标签吗?你能在你的问题上更具体吗?