C#taghelper字符串替换
我正在开发一个.net core taghelper,它将把简单的标记转换为我的移动和桌面菜单所需的标记,我需要一些帮助/复习,了解完成字符串操作的最佳方法是什么,因为我现在不幸生锈了。下面是起始标记示例C#taghelper字符串替换,c#,regex,asp.net-core-mvc,C#,Regex,Asp.net Core Mvc,我正在开发一个.net core taghelper,它将把简单的标记转换为我的移动和桌面菜单所需的标记,我需要一些帮助/复习,了解完成字符串操作的最佳方法是什么,因为我现在不幸生锈了。下面是起始标记示例 <topnav> <a asp-controller="Home" asp-action="Index">Home</a> <a asp-controller="Home" asp-action="Test1">Test1<
<topnav>
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Test1">Test1</a>
<a asp-controller="Home" asp-action="Test2">Test2</a>
<div>
<span>Nested Section</span>
<a asp-controller="Home" asp-action="Test3">Test3</a>
<a asp-controller="Home" asp-action="Test4">Test4</a>
</div>
</topnav>
我已经构建了模板,只需要从原始topnav标记的内容完成字符串解析并适当地插入它。我还希望解决方案能够处理需要多个嵌套的菜单,例如
<topnav>
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Test1">Test1</a>
<a asp-controller="Home" asp-action="Test2">Test2</a>
<div>
<span>Nested Section</span>
<a asp-controller="Home" asp-action="Test3">Test3</a>
<div>
<span>Nested Section 2</span>
<a asp-controller="Home" asp-action="Test5">Test5</a>
<a asp-controller="Home" asp-action="Test6">Test6</a>
</div>
<a asp-controller="Home" asp-action="Test4">Test4</a>
</div>
</topnav>
家
测试1
测试2
嵌套截面
测试3
嵌套第2节
测试5
测试6
测试4
我认为regex是一个不错的选择,但我想在走错方向之前收集一些意见。如果需要的话,也可以添加到原始标记中,但我要求它尽可能小。请提供例子
谢谢 在考虑正则表达式之前,我会考虑使用XML解析器。我认为远离XML是最好的选择,因为它或多或少已经从.NETCore中完全删除了?我特别要求提供.net core taghelper的最佳实践,那么可能是.net core的Html Agility Pack?我在查看对HTMLAgilityPack的引用时发现,System.Xml.Linq.XDocument是您在第一条评论中指导我的吗?它似乎是最容易使用的。
<a asp-controller="Home" asp-action="Test3">Test3</a>
<a asp-controller="Home" asp-action="Test4">Test4</a>
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Test1">Test1</a>
<a asp-controller="Home" asp-action="Test2">Test2</a>
<div class='accordion'>
<div class='title'>
<span>Nested Section</span>
<i class='icon'></i>
</div>
<div class='content'>
<a asp-controller="Home" asp-action="Test3">Test3</a>
<a asp-controller="Home" asp-action="Test4">Test4</a>
</div>
</div>
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Test1">Test1</a>
<a asp-controller="Home" asp-action="Test2">Test2</a>
<div class='dropdown'>
<span>Nested Section</span>
<i class='icon'></i>
<div class='menu'>
<a asp-controller="Home" asp-action="Test3">Test3</a>
<a asp-controller="Home" asp-action="Test4">Test4</a>
</div>
</div>
<nav class='sidebar menu'>
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Test1">Test1</a>
<a asp-controller="Home" asp-action="Test2">Test2</a>
<div class='accordion'>
<div class='title'>
<span>Nested Section</span>
<i class='icon'></i>
</div>
<div class='content'>
<a asp-controller="Home" asp-action="Test3">Test3</a>
<a asp-controller="Home" asp-action="Test4">Test4</a>
</div>
</div>
</nav>
<section class='top menu'>
<nav class='computer'>
<a href="#"><img alt="logo"/></a>
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Test1">Test1</a>
<a asp-controller="Home" asp-action="Test2">Test2</a>
<div class='dropdown'>
<span>Nested Section</span>
<i class='icon'></i>
<div class='menu'>
<a asp-controller="Home" asp-action="Test3">Test3</a>
<a asp-controller="Home" asp-action="Test4">Test4</a>
</div>
</div>
</nav>
<div class='mobile'>
<a href="#"><img alt="logo"/></a>
<a href='#'><i class='sidebar icon'></i></a>
</div>
</section>
<topnav>
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Test1">Test1</a>
<a asp-controller="Home" asp-action="Test2">Test2</a>
<div>
<span>Nested Section</span>
<a asp-controller="Home" asp-action="Test3">Test3</a>
<div>
<span>Nested Section 2</span>
<a asp-controller="Home" asp-action="Test5">Test5</a>
<a asp-controller="Home" asp-action="Test6">Test6</a>
</div>
<a asp-controller="Home" asp-action="Test4">Test4</a>
</div>
</topnav>