1

webResposneから3行目(または1行だけをログに記録できない場合は1行目から3行目)のみをログに記録しようとしています。

これが私が今使っているコードの抜粋です。

StreamReader read = new StreamReader(myHttpWebResponse.GetResponseStream(), System.Text.Encoding.UTF8);
        String result = read.ReadToEnd();
        Log("Access", Server.HtmlEncode(result), "Success");

次の出力が得られます

<html>
<head>
    <title>Access is Granted.</title>
    <style>
     body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 
     p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
     b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
     H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
     H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
...

等々。

「(title> Access isGranted。(/ title>」」をログに記録し、他の何も(またはその行の後は何も)印刷しないようにします。

どうすればいいですか?

ありがとうございました

4

6 に答える 6

1

ビルド拡張メソッド:

public static IEnumerable<string> ReadLines(this StreamReader reader)
{
     yield return reader.ReadLine();
}

次に、LINQを使用して任意の行を選択できます。以下の例では、3番目の行を選択します。

 var result  = streamReader.ReadLines()
                           .ElementAtOrDefault(2);

あなたはまだこの方法で延期された実行を利用します

于 2013-01-28T17:14:34.600 に答える
1

インデックスを介して特定の行を参照できるように、すべての行を配列に読み込むことができます。

于 2013-01-28T16:55:40.527 に答える
1

を使用する代わりに特定の行を読む必要がある場合は、を使用しReadToEndて調べるReadLine必要があります。必要な行に到達したときに、読み取った行数を数えることができるはずです。

于 2013-01-28T16:50:34.143 に答える
1

正規表現がそのトリックを行います。簡単な例:

string test = @"<html>\n<head>\n<title>Access is Granted.</title>\n<style>...";
string output = Regex.Match(test, "<title>.*</title>").Value;
于 2013-01-28T17:17:15.733 に答える
0

HtmlAgilityPackを使用します。

それを通して応答を実行し、必要な行を抽出します。

簡潔でシンプル

于 2013-01-28T16:58:05.593 に答える
0

を使用して、XmlReader必要な正確な値を HTML ドキュメントから読み取るのはどうですか? はストリーミングなのでXmlReader、配列メソッドのようにわざわざドキュメント全体を読む必要はなく、自動的に解析してくれます。<title>これは、タグが特定の行にあることに依存するよりも安全です。

using(var reader = XmlReader.Create(myHttpWebResponse.GetResponseStream()))
{
    reader.ReadToDescendant("title");
    var result = "<title>" + reader.ReadElementString() + "</title>";
    Log("Access", Server.HtmlEncode(result), "Success");
}
于 2013-01-28T17:01:11.593 に答える