Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何查找末端标记行号?_C#_Html - Fatal编程技术网

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