我的方法没什么问题。所以首先我从我的硬件加载一个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我有来自//身体的字符串所以我想逐行阅读和copmare日期:
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个字符串。所以有人可以形容我,其他人在哪里串起来?
这项工作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标签中取出字符串。我的解决方案是将它们全部排在一行。我认为for lenght字符串的循环是好的。我错了,因为我不知道我必须得到多少弦。请记住,1“quete”以“001”开头,以“1”结尾。 我尝试将节点作为
HtmlNode node in doc.DocumentNode.SelectNodes("//body/pre/br")
但这不起作用。
答案 0 :(得分:1)
您需要选择P
代码...我希望SelectNodes("//p")
或SelectNodes("//body/p")
之类的内容,而不是选择单个body
元素(这将作为内部text包含P标签内所有字符串的串联。)