在字符串中查找最后一个未关闭的XML标记

时间:2017-09-24 12:15:49

标签: c# regex xml

我正在尝试在C#中创建一个函数,当用户键入</时,该函数将尝试自动生成结束XML标记。 假设我有以下字符串:

<books>
  <book>
  <author>Tolkien</author>
  <title>Fellowship of the Ring</title>
  </book>
  <book>

当用户输入</时,应该直接附加字符串book>

我对如何找到最后一个未关闭的标记(在这种情况下是<book>编程方式感到很遗憾。正则表达式是最好的方法吗?使用XML解析器似乎是不可能的,因为此时的XML无效。

1 个答案:

答案 0 :(得分:3)

考虑使用堆栈,对于推送标签的每个开始标签,然后每当遇到'&lt; /'你从堆栈中弹出标签

<books>
  <book>
  <author>Tolkien</author>
  <title>Fellowship of the Ring</title>
  </book>
  <book>

推书,推书,推作者,流行作家,推书,流行标题,流行书等。

在此结束时,堆栈上的任何内容都没有正确关闭