-1

解析後に書式設定されたテキストのみを含む html ドキュメントがあります。マウスで選択し、コピーして新しいテキスト ドキュメントに貼り付けた場合と同じように、テキストを取得できるかどうか疑問に思っていました。

これは、開いている Word のコンテンツを選択する .ActiveSelection プロパティがある Microsoft.Office.Interop で可能であることを知っています。

どうにかして(おそらくブラウザオブジェクトで)htmlをロードし、そのすべてのコンテンツをコピーして文字列に割り当てる方法を見つける必要があります。

var doc = new HtmlAgilityPack.HtmlDocument();
var documetText = File.ReadAllText(myhtmlfile.html, Encoding.GetEncoding(1251));
documetText = this.PerformSomeChangesOverDocument(documetText);
doc.LoadHtml(documetText);
var stringWriter = new StringWriter();
AgilityPackEntities.AgilityPack.ConvertTo(doc.DocumentNode, stringWriter);
stringWriter.Flush();
var titleNode = doc.DocumentNode.SelectNodes("//title");
if (titleNode != null)
{
    var titleToBeRemoved = titleNode[0].InnerText;
    document.DocumentContent = stringWriter.ToString().Replace(titleToBeRemoved, string.Empty);
}
else
{
    document.DocumentContent = stringWriter.ToString();
}

次に、ドキュメントオブジェクトを返します。問題は、文字列が常に希望どおりにフォーマットされているとは限らないことです

4

1 に答える 1

0

あなたはただ使うことができるはずでStreamReader、各行を読むときにそれを使って書き出すだけですStreamWriter

このようなものは、ファイルの最後まで読み取り、新しいファイルに保存します。ファイルで追加のロジックを実行する必要がある場合は、コメントを挿入して、そのすべてを実行する場所を知らせます。

private void button4_Click(object sender, EventArgs e)
        {
            System.IO.StreamWriter writer = new System.IO.StreamWriter("C:\\XXX\\XXX\\XXX\\test2.html");
            String line;
            using (System.IO.StreamReader reader = new System.IO.StreamReader("C:\\XXX\\XXX\\XXX\\test.html"))
            {
                //Do until the end
                while ((line = reader.ReadLine()) != null) {
                //You can insert extra logic here if you need to omit lines or change them
                writer.WriteLine(line);
                }
                //All done, close the reader
                reader.Close();
            }
            //Flush and close the writer
            writer.Flush();
            writer.Close();

        }

それを文字列に保存して、好きなことをすることもできます。改行を使用して同じ形式を維持できます。

編集以下はあなたのタグを考慮に入れます

  private void button4_Click(object sender, EventArgs e)
        {
            String line;
            String filetext = null;
            int count = 0;
            using (System.IO.StreamReader reader = new System.IO.StreamReader("C:\\XXXX\\XXXX\\XXXX\\test.html"))
            {
              while ((line = reader.ReadLine()) != null) { 
                if (count == 0) {
                    //No newline since its start
                    if (line.StartsWith("<")) {
                        //skip this it is formatted stuff
                    }
                    else {
                    filetext = filetext + line; 
                    }
                    }
                else {
                    if (line.StartsWith("<"))
                    {
                        //skip this it is formatted stuff
                    }
                    else
                    {
                        filetext = filetext + "\n" + line;
                    }
                }
                count++;                           
           }                
            Trace.WriteLine(filetext);                  
            reader.Close();
            }          
        }
于 2013-08-27T14:54:01.727 に答える