在C#中使用streamreader在字符串中的<h1> </h1>标记之间保存文本

时间:2012-11-14 08:03:34

标签: c# text-files streamreader

我在C#中使用streamreader,我的目标是用它读取文本文件,并且必须在标记之间过滤掉文本(例如<Test> </Test><Name> </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();
        }

    }

预期输出例如是一个字符串,其名称=纯文本名称标签之间的所有内容,然后test =纯文本中的测试标签之间的所有内容。 抱歉我的英语不好,但我希望有一个人可以帮助我。

3 个答案:

答案 0 :(得分:2)

您可以使用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

H2

H3

H4

H5

答案 1 :(得分:0)

答案 2 :(得分:0)

如果文件是HTML,您可以使用HTML Agility pack来解析文件,然后按标记名称查询结果。这比正则表达式更受欢迎,因为它更好地处理所有复杂性,例如,嵌套标签,构造不良的html等等。Attempting to parse HTML with regular expressions may lead to insanity

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

否则,您将需要编写一个自定义解析器,这是一个更加复杂和耗时的企业。

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