C# 如何查找末端标记行号?
我需要你帮我找到最后的标签号。例如:C# 如何查找末端标记行号?,c#,html,C#,Html,我需要你帮我找到最后的标签号。例如: <tr> <td>...</td> <td>...</td> </tr> <tr> <td>...</td> <td>...</td> <tr> <td>...</td> <td>...</td> </tr> ... ...
<tr>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>...</td>
<td>...</td>
<tr>
<td>...</td>
<td>...</td>
</tr>
...
...
...
...
...
...
在上面的那一行中,第一个
标记被相应地打开和关闭。在第二个
中,它被打开但未关闭。在不关闭
的情况下,它会打开第三个
。在这种情况下,我需要将行号显示为错误。我可以找到行号打开标签。我需要找到结束标记行编号。我在WPF C工作 解析时需要将它们放在“堆栈”上。当有一个打开的标记时,推到堆栈中,当有一个关闭的标记时,按相反的顺序移除。如果关闭标记打开标记类型,则会出现错误
在解析时计算行数,当出现不匹配时,打印当前的行号。通过计算换行次数来计算行号(对于Windows/Linux,字符10;对于Mac,字符13)
将结束标记与开始标记进行比较
堆栈(显示“力学”的pesudo表示):
Parser res当前堆栈
---------- -------------
找到TR->TR
找到TD->TR-TD
找到/TD->TR(它匹配堆栈上的最后一个标记)
找到TD->TR-TD
找到/TD->TR(它匹配堆栈上的最后一个标记)
找到/TR->(它匹配堆栈上的最后一个标记-堆栈为空,一切正常)
找到TR->TR
找到TD->TR-TD
找到/TD->TR(它匹配堆栈上的最后一个标记)
找到TD->TR-TD
找到/TD->TR(它匹配堆栈上的最后一个标记)
找到TR->TR(不匹配!/+TR,如预期),打印错误+行号
如果您不关心属性,那应该很简单。你试过什么?多了解一些情况会很好。你这么做是为了什么?我完全是基于机械的表现来投票的:)谢谢,我对机械很满意。希望这也是可以理解的;)
Parser res Current stack
---------- -------------
Found TR -> TR
Found TD -> TR-TD
Found /TD -> TR (it matched last tag on stack)
Found TD -> TR-TD
Found /TD -> TR (it matched last tag on stack)
Found /TR -> (it matched last tag on stack - stack is empty, all ok)
Found TR -> TR
Found TD -> TR-TD
Found /TD -> TR (it matched last tag on stack)
Found TD -> TR-TD
Found /TD -> TR (it matched last tag on stack)
Found TR -> TR (mismatch! /+TR <> TR as expected), print error + line number