在C#中使用streamreader在<;h1></h1>;字符串中的标记

在C#中使用streamreader在<;h1></h1>;字符串中的标记,c#,text-files,streamreader,C#,Text Files,Streamreader,我在C#中使用streamreader,我的目标是用它读取文本文件,它必须过滤掉标记之间的文本(如或) 并获取标记的名称,如(Test或name),然后将其保存为带有标记名称的字符串,以供以后使用。 我已经在网上搜索了几天,但什么也找不到,而且我对C#没有太多经验,但希望有人能帮我。 该文件本身是一个.txt文件 以下是我目前掌握的代码: class Program { static void Main(string[] args) {

我在C#中使用streamreader,我的目标是用它读取文本文件,它必须过滤掉标记之间的文本(如
) 并获取标记的名称,如(Test或name),然后将其保存为带有标记名称的字符串,以供以后使用。 我已经在网上搜索了几天,但什么也找不到,而且我对C#没有太多经验,但希望有人能帮我。 该文件本身是一个.txt文件

以下是我目前掌握的代码:

class Program
    {
        static void Main(string[] args)
        {

            using (StreamReader sr = new StreamReader(@"C:\testfile.txt"))
            {

                String line;
                // Read line by line
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);

                }
            }
            Console.ReadKey();
        }

    }
例如,预期的输出是一个字符串,其中name=everything位于纯文本中的name标记之间,test=everything位于纯文本中的test标记之间。
很抱歉我的英语不好,但我希望有人能帮助我。

我建议您使用正则表达式过滤文本:

这里有一个例子:


如果文件是HTML,则可以使用解析文件,然后按标记名查询结果。这是正则表达式的首选,因为它能更好地处理所有的复杂性,例如,嵌套标记、构造糟糕的html等等

如果它是纯XML,那么您可以以类似的方式使用它

否则,您将需要编写一个定制解析器,这是一个更加复杂和耗时的任务


如果文件符合常规语法,则可以构建递归下降解析器。

可以使用XmlDocument

        XmlDocument Info_Document = new XmlDocument();
        Info_Document.Load(@"D:\saraxml.txt");
        XmlNodeList xmlnodelist = Info_Document.GetElementsByTagName("Name");//finding all nodes called "Name"
            foreach (XmlNode c in xmlnodelist)
            {
               string _name=c.InnerText;
            }

对于此文件:

<test>
<Name> h0</Name>

<Name> h1</Name>

<Name> h2</Name>

<Name> h3</Name>

<Name> h4</Name>

<Name> h5</Name>
</test>

h0
h1
氢
h3
h4
h5

我得到:

h0

h1

h3

h4


h5

您的文本文件似乎是xml或HTML请提供预期输出的示例。它是一个自定义文本文件(*.txt)使用定制标记找到一种定制的方法来解决您的问题预期的输出将是一个包含变量的字符串,如名称标记之间的name=al文本和测试标记之间的test=al文本等。要尝试一下吗谢谢这解决了我的问题非常感谢