• ベストアンサー

VB.NETでテキストファイルの解析についてヒントをいただけないでしょ

VB.NETでテキストファイルの解析についてヒントをいただけないでしょうか? 通常のテキストファイルなのですが中身は 「<div class=・・・」といったようなタグが記述されています。 特定のクラス名を見つけたらそのデータをテキストボックスに反映させたいのですがテキストファイルのタグを解析するメソッドなどが見つかりません。xmlではないのでその解析は使えないと思うのですが・・・どのようにやるのがいいものでしょうか?

  • mr-r00
  • お礼率93% (480/516)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

Microsoft.mshtmlを利用すると、html構成を解析できます。 Microsoft.mshtmlは要参照設定です。 Imports System.IO Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load   'ファイルを読む   Dim l_strBuff As String = ReadTextSJIS(New FileInfo("C:\20100101AAA.txt"))   'そちらの作りがわからないので、取得した分だけテキストボックスをコンテンツに追加   テキストボックス作成(l_strBuff) End Sub Private Function ReadTextSJIS(ByVal p_fInf As FileInfo) As String   Return System.IO.File.ReadAllText(p_fInf.FullName, Encoding.GetEncoding("shift_jis")) End Function Private Sub テキストボックス作成(ByVal p_strBuff As String)   Dim a As New mshtml.HTMLDocument   Dim l_htmDoc As New mshtml.HTMLDocument   l_htmDoc.open("<html />")   Dim l_htmDiv As mshtml.HTMLDivElement = l_htmDoc.createElement("DIV")   l_htmDoc.appendChild(l_htmDiv)   l_htmDiv.innerHTML = p_strBuff   '中の要素数でループ   For Each l_htmItem As mshtml.IHTMLElement In l_htmDiv.children     Dim l_txt As New TextBox     Me.form1.Controls.Add(l_txt)     'クラス名を取得し設定する     l_txt.CssClass = l_htmItem.className     'テキスト内容を取得し設定する     l_txt.Text = l_htmItem.innerText   Next End Sub

mr-r00
質問者

お礼

大変さんこうになりました。 もっと勉強していきたいと思います ありがとうございました

その他の回答 (2)

回答No.2

>タグを解析するメソッドなどが見つかりません。xmlではないのでその解析は使えない そんな事はありません。 XML同様、マークアップ言語であるHTMLのであれば、書式が整っていたら解析は行えます。 方法はいくつかありますが、例が <div class=・・・ だけでは何とも。。。 以前に質問をされていた http://okwave.jp/qa/q5819786.html の関連ですよね? その質問の20100101AAA.txtなどの内容にタグが入っているってことかな? http://okwave.jp/qa/q5886640.html という質問をしているところをみると、テキストボックスっていうのはASP.NETでのですか?それとも単なるクライアントアプリ? >をテキストボックスに反映 とは、そのテキストボックスのクラス名に設定するってこと?それとも、内容をTextプロパティに出力ってこと? まずは実データの中身をダミーデータに置き換えて公開してください。 そして「この様な出力を行いたい」という結果例も載せてください。 それ以外にも、載せれる情報は可能な限り公開をしてください。

mr-r00
質問者

お礼

ご回答ありがとうございます。 ファイルの中身ですが、 <div class="div1">てすと</div> <div class="div2">テスト</div> <div class="div3">TEST</div> <div class="div4">test</div> <div class="div5">tesuto</div> といったような単純構造です。 テキストボックスはASPNETのものでその内容をTextプロパティに出力を考えていました

回答No.1

例えば (1)テキストファイルを読み込み、StringReaderクラスを生成し、ReadLineメソッドで1行ずつ読み込む。 (2)読み込んだ1行の文字列から「<div class=」をInStrメソッドで検索。 (3)見つかれば、その先のクラス名を判定し、目的のクラス名ならデータを処理。 (4)次の1行を読み込み、繰り返し。 というようなやり方はどうでしょうか? クラス名が1つならいっそのこと「class=クラス名」をInStrメソッドで探した方が早そうですが。

mr-r00
質問者

お礼

ありがとうございました

関連するQ&A

  • VB.NETでテキストファイルからHTMLファイルを動的に生成したいの

    VB.NETでテキストファイルからHTMLファイルを動的に生成したいのですがどのようにやればできるかヒントをいただけないでしょうか? とあるフォルダに下記のようなファイルがあるとします。 20100101AAA.txt 20091008AAA.txt 20100202AAA.txt 20070707AAA.txt 20100412AAA.txt また、ファイルの中身は <div id = 'AAA'>それぞれのファイルの内容</div> <div id = 'BBB'>それぞれのファイルの内容</div> です。 まず、ファイル名から日付を解析して新しい順番に並べるアルゴリズムを考えたいのですがどのようにしたらいいか困っています。 また、並び変えたファイルを動的に合成して一つのHTMLを作りたいのですがどのようにしたらいいのでしょうか? 詳しい方よろしくお願いします。

  • aspxのページにjQueryのloadメソッドを使ってテキストボック

    aspxのページにjQueryのloadメソッドを使ってテキストボックスに値を反映させることは不可能でしょうか? テキストボックスはこんな感じです。 <asp:TextBox ID="TextBox3" runat="server" Height="72px" TextMode="MultiLine" Width="651px"></asp:TextBox> サーバ上に存在しているテキストファイルのタグを解析してテキストボックスに反映させたいのですが・・・動いてくれません。 $(document).ready(function (){ $("#TextBox3").load("load.txt .div1"); }); そもそも不可能なことをしているのでしょうか?

    • ベストアンサー
    • AJAX
  • テキストファイル印刷 .net VB2005

    .net VB2005初心者です。 テキストファイルを、画面上、テキストボックスに出力するとこが出来ました。 そこで、そのテキストボックスの内容を、ボタンを押下しただけで、紙に印刷する方法を教えてください。

  • VB.NETのパネルの使い方

    VB.NETでWEBアプリケーションを作るのですが、Panelコントロールにテキストボックスやコンボボックスを配置し、メソッド一回でそのパネルの上に乗っている各コントロールをクリアしたいのです。こういう使い方ってできるのでしょうか?

  • VB6 ファイルのリネームの仕方

    VB6で、ドライブリストボックス→ディレクトリリストボックス→ と順に選択していくとファイルリストボックスにファイルが見えるようになるのですが、 そのディレクトリにあるファイル名を全部テキストボックスに表示して、 ファイル名の変更をできるようにしたいのですが、どのように記述すればいいのでしょうか? 分かる方いましたらよろしくお願いします。

  • VB2005でXMLのテキストデータをXMLデータにするには?

    VB2005の初心者です。 タグ付きのXMLのテキストデータを読み込んで、項目ごとにDBに登録したいのですが、やり方が分りません。 テキストデータをXMLデータ、もしくはノード、もしくはデータセット型に変換しなければならないと思うのですが、そのやり方を教えていただきたいです。 ちなみに、XMLデータをテキストデータにするのは下記のとおりでできました。この strText を逆にXMLデータに変換したいです。 Dim xmlDoc As MSXML2.DOMDocument = New MSXML2.DOMDocument Dim strText As String xmlDoc.PreserveWhitespace = True xmlDoc.Load("C:XMLData.xml") strText = xmlDoc.xml 何かヒントでも良いので、たくさんの方の知恵をお借りしたいです。

  • VB で、テキストボックスをコピーする方法 {至急お願いいたします}

    VB で、テキストボックスをコピーする方法 {至急お願いいたします} 今、VisualBasic(以下、VB) で、ソフトを作っていますが、テキストボックスの中身をクリップボードにコピーしたいです コピーしたいのは、 textbox9です。 clip.SetDataObject(TextBox1.Text) でやってみるとエラーを起こしてしまいます・・・ どうすると、テキストボックスの中身をコピーできるでしょうか? 尚、現在、VBの2008無料版と2010の無料版でやっています メインは、2010ですので・・・

  • 参照するテキストファイルの数

    決め打ちのSQL文を記述したテキストファイルをOpenステートメントで 読み込み、テキストボックスへ表示させています。 できるだけVBのコードをメンテしないようにしたいので、テキストファイルで SQLを持っているのですが、いろんなパターンのSQL文がありテキストファイルが 8ファイルくらいになってしまいます。 参照する為のテキストファイルは、何ファイルくらいまでが理想なんでしょうか? いくつもあってもかまわないのでしょうか? 教えていただけませんでしょうか?? よろしくお願いいたします。

  • VB.NETでの韓国語のファイル入出力

    VB.NETでテキストボックスから入力した韓国語をテキストファイルに保存し,再度ファイルを読み込んで,フォーム上に表示するプログラムを作成しています。 テキストボックスに韓国語で入力するところまではできました。さらに同じフォーム上にあるテキストボックスやリストボックスにSTRING変数を介して表示させることもできます。 ただ,テキストファイルに書き出すと『???』が表示されてうまく書き出すことができません。ハングルをテキストファイルへ読み書きできるようにする方法がわかる方がいたら,ぜひご教授ください。 よろしくお願いします。 環境 Win2000 英語版 VB.NET FileOpen(),LineInput関数を使用中

  • VB.NETのWEBアプリでテキストボックスにHTMLなどのタグを入れ

    VB.NETのWEBアプリでテキストボックスにHTMLなどのタグを入れてしまうとエラーになりますよね・・・ でもどうしてもタグを使いたい場合はどうしたらいいのでしょうか? 出来ればいいのは一応限られてはいますが・・・ たとえば強調文字、文字色、ハイパーリンクができれば十分かなと思っています。 テキストボックスにタグが入った状態で操作するとエラーページになってしまいますがASP.NETのエラーページの見栄えが嫌いなので(ていうかユーザーがびっくりしちゃうので・・・)事前にタグを見つけるなんてことは可能でしょうか?

専門家に質問してみよう