【问题标题】:Finding the last unclosed XML tag in a string查找字符串中最后一个未关闭的 XML 标记
【发布时间】:2018-03-05 12:31:21
【问题描述】:

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

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

当用户键入&lt;/时,应直接附加字符串book&gt;

我有点迷失如何找到最后一个未关闭的标签(在这种情况下 &lt;book&gt; 以编程方式。正则表达式是最好的方法吗?使用 XML 解析器似乎是不可能的,因为 XML 在这点无效。

【问题讨论】:

标签: c# regex xml


【解决方案1】:

考虑使用堆栈,对于每个开始标签,您都推送标签,然后每当遇到“”时,您都会从堆栈中弹出标签

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

推书、推书、推作者、流行作者、推书名、流行书名、流行书等

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

【讨论】:

  • 当然,如果您允许编辑或删除已经输入的文本(谁不允许?),那么它会变得相当复杂。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-10
相关资源
最近更新 更多