2012-11-14 35 views
0

我正在使用C#的StreamReader,我的目标是要读它的文本文件,它必须过滤掉(<Test> </Test><Name> </Name>状或)标记之间的文本 并获取标签的名称(如“测试”或“名称”),然后将其保存为带有标签名称的字符串以备后用。 我已经搜索了几天的互联网,但无法找到任何东西,我没有太多的C#经验,但希望有一个人可以帮助我。 文件本身是一个.txt文件使用C#中的StreamReader保存<h1></h1>标签之间的文本字符串中的

这里是代码,我到现在为止:

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 =万事然后测试字符串=以纯文本形式在测试标签之间进行分隔。 对不起我的坏英语,但我希望有一个人可以帮助我。

+1

你的文本文件似乎是XML或HTML –

+0

请提供预期输出的一个例子。 –

+0

这是一个自定义的文本文件(*。txt)与自定义标签 – JackF

回答

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

+0

要去试一试谢谢 – JackF

+1

这解决了我的问题非常感谢 – JackF

0

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

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

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

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

相关问题