我在传统文本文件中有大约27,000个以下标记条目:
<li class="active-result group-option" data-option-array-index="4">Microsoft Power BI</li>
上面我唯一需要的是(在这种情况下)
Microsoft Power BI
使用C#,我尝试了字符串拆分选项(从名为select.txt
的文件中读取),但是,我还没有完成此任务。有什么想法吗?
答案 0 :(得分:0)
我知道有人会因为使用xml读取html而给我带来负面影响。但在这种情况下,它运作良好。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string text = "<li class=\"active-result group-option\" data-option-array-index=\"4\">Microsoft Power BI</li>";
//use only for reading from string.
StringReader reader = new StringReader(text);
List<string> data = new List<string>();
//for reading from file use XmlReader.Create(filename);
XmlReader xReader = XmlReader.Create(reader);
while(!xReader.EOF)
{
if(xReader.Name != "li")
{
xReader.ReadToFollowing("li");
}
if(!xReader.EOF)
{
data.Add(xReader.ReadInnerXml());
}
}
}
}
}
答案 1 :(得分:-1)
做这样小事的最理想的方法是正则表达式。
在文件顶部添加:
using System.Text.RegularExpressions;
然后使用此正则表达式捕获所需的所有值
string input = ReadSomethingFromFile(); // input is the raw data you are trying to read
MatchCollection matches = Regex.Matches(input, "<li class=\"active-result group-option\"[^<]+>([^<]+)</li>");
// Loop through all matched elements
forEach(Match m in matches) {
string capturedString = m.Captures[0].Value;
// Do something with capturedString
}
如果您计划稍后在程序中添加更多功能,则应使用正确的html解析库。但如果你只是做这件事,正则表达式是最简单的选择。