C# split with StringReader



我对我的方法没有什么问题。因此,首先我从硬件加载一个html web。它有点小,但是:这是来自网络的代码:

<!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的字符串,所以我想逐行读取和日期:

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();
        }

但是,这是线索。我在"拆分字符串"中只有 001 个字符串。所以有人可以描述我在哪里,其他人从行中串在哪里?这项工作slowa = id.Split(pommidChar);工作,并完全拆分了我想要的东西,但我无法逐行阅读.

我通过这个问题,因为已经完成了。现在我还有一个愚蠢的问题要问某人。我的大学博士从网络上更改了 soruce 代码。现在所有变量(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 循环很好.我错了,我不知道我必须得到多少字符串。请记住,1 "quete"以"001"开头,以"1"结尾。我尝试将节点获取为

HtmlNode node in doc.DocumentNode.SelectNodes("//body/pre/br")

但这行不通。

您需要选择P标签...我希望像SelectNodes("//p")SelectNodes("//body/p")这样的东西,而不是选择单个body元素(它将作为内部文本包含 P 标签内所有字符串的串联)。

最新更新