[英]C# split with StringReader
我的方法没什么问题。 所以首先我从我的硬件加载一个html网站。 它有点小,但是:这是来自网络的代码:
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8" /> </head> <body> <p>001;20151006;0000;1800;1000;999;1;</p> <p>001;20151006;0100;1300;990;999;1;</p> <p>001;20151006;0200;1100;1000;999;1;</p> <p>001;20151006;0300;1500;1100;999;1;</p> <p>001;20151006;0400;2200;500;999;1;</p> <p>001;20151006;0500;1900;100;999;1;</p> <p>001;20151006;0600;0700;990;999;1;</p> <p>001;20151006;0700;0300;998;999;1;</p> </body> </html>
我只需要拿身体并在第二排和第三排加载yyyyMMdd HH:mm。 所以这是我的代码:
char[] pommidChar = { ';' };
WebRequest request = WebRequest.Create(
"http://localhost:49443/Wyniki.html");
request.Credentials = CredentialCache.DefaultCredentials;
WebResponse response = request.GetResponse();
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
// Console.WriteLine(responseFromServer);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(responseFromServer);
// Console.WriteLine(doc);
string formatString = "yyyyMMddHHmm";//201510060000;
reader.Close();// = "201510060000"
response.Close();
string[] slowa;
string tekst ;
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//body"))
{
string temp = "";
Console.WriteLine(node.InnerText);
id = node.InnerText;
tekst = node.InnerText;
//Console.WriteLine("Node"+node.ToString());
slowa = id.Split(pommidChar);
temp = slowa[1] + slowa[2];
//Console.WriteLine(slowa[30]);
Console.WriteLine("string pobrany ze strony"+temp);
DateTime dt = DateTime.ParseExact(temp, formatString, CultureInfo.InvariantCulture,
DateTimeStyles.None);
Console.WriteLine("Ostatnia dana z parse:" + dataParse1.ToString("yyyy-MM-dd HH:mm"));
Console.WriteLine("Aktualna pobrana z urzadzenia:" + dt.ToString("yyyy-MM-dd HH:mm"));
现在在tekst中,我有// body的字符串,因此我想一行一行地读取和copmare date:
using (StringReader readerr = new StringReader(tekst))
{
string[] splitline;
string line;
while ((line = readerr.ReadLine()) != null)
{
Console.WriteLine(line);
splitline = line.Split(pommidChar);
// Console.WriteLine(splitline[0]);
Console.WriteLine(splitline[1]);
}
readerr.Close();
}
但是,这是线索。我在“ splitstring”中只有1个字符串,它的001。 所以有人可以形容我其他人在哪里? 这项工作slowa = id.Split(pommidChar);
工作并准确地分割我想要的东西,但是我不能逐行阅读。
我通过了这个问题,因为已经完成了。 现在我还有一个愚蠢的问题要问某人。 我来自大学的博士更改从网络中获取代码。 现在所有变量(html代码)都设置在1行中
<body> <pre><br>001;20151006;000034;1800;1000;999;1<br>001;20151006;000035;1800;1000;999;1;<br>001;20151006;000036;1800;1000;999;1;</pre> </body>
因此,我如何从BR标签中取出字符串。 我的解决方案是将它们全部排成一排。 我本以为用长字符串进行循环是好的。 我错了,因为我不知道我必须得到多少弦。 请记住,1个“ quete”以“ 001”开头,以“ 1”结尾。 我尝试将节点作为
HtmlNode node in doc.DocumentNode.SelectNodes("//body/pre/br")
但这不起作用。
您需要选择P
标签...我希望像SelectNodes("//p")
或SelectNodes("//body/p")
而不是选择单个body
元素(作为内部文本包含所有元素的串联) P标签中的字符串)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.