我正在尝试在C#中创建一个函数,当用户键入</
时,该函数将尝试自动生成结束XML标记。
假设我有以下字符串:
<books>
<book>
<author>Tolkien</author>
<title>Fellowship of the Ring</title>
</book>
<book>
当用户输入</
时,应该直接附加字符串book>
。
我对如何找到最后一个未关闭的标记(在这种情况下是<book>
编程方式感到很遗憾。正则表达式是最好的方法吗?使用XML解析器似乎是不可能的,因为此时的XML无效。
答案 0 :(得分:3)
考虑使用堆栈,对于推送标签的每个开始标签,然后每当遇到'&lt; /'你从堆栈中弹出标签
<books>
<book>
<author>Tolkien</author>
<title>Fellowship of the Ring</title>
</book>
<book>
推书,推书,推作者,流行作家,推书,流行标题,流行书等。
在此结束时,堆栈上的任何内容都没有正确关闭