我在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 =纯文本中的测试标签之间的所有内容。 抱歉我的英语不好,但我希望有一个人可以帮助我。
答案 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)
我建议您使用正则表达式来过滤文本:
http://msdn.microsoft.com/fr-fr/library/system.text.regularexpressions.regex.aspx
这里有一个例子:
答案 2 :(得分:0)
如果文件是HTML,您可以使用HTML Agility pack来解析文件,然后按标记名称查询结果。这比正则表达式更受欢迎,因为它更好地处理所有复杂性,例如,嵌套标签,构造不良的html等等。Attempting to parse HTML with regular expressions may lead to insanity。
如果它是纯XML,那么您可以以类似的方式使用XMLDocument。
否则,您将需要编写一个自定义解析器,这是一个更加复杂和耗时的企业。
如果你的文件符合常规语法,你可以构建一个递归下降解析器。