- ベストアンサー
VB.NETでテキストファイルの解析についてヒントをいただけないでしょ
VB.NETでテキストファイルの解析についてヒントをいただけないでしょうか? 通常のテキストファイルなのですが中身は 「<div class=・・・」といったようなタグが記述されています。 特定のクラス名を見つけたらそのデータをテキストボックスに反映させたいのですがテキストファイルのタグを解析するメソッドなどが見つかりません。xmlではないのでその解析は使えないと思うのですが・・・どのようにやるのがいいものでしょうか?
- みんなの回答 (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
その他の回答 (2)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
>タグを解析するメソッドなどが見つかりません。xmlではないのでその解析は使えない そんな事はありません。 XML同様、マークアップ言語であるHTMLのであれば、書式が整っていたら解析は行えます。 方法はいくつかありますが、例が <div class=・・・ だけでは何とも。。。 以前に質問をされていた http://okwave.jp/qa/q5819786.html の関連ですよね? その質問の20100101AAA.txtなどの内容にタグが入っているってことかな? http://okwave.jp/qa/q5886640.html という質問をしているところをみると、テキストボックスっていうのはASP.NETでのですか?それとも単なるクライアントアプリ? >をテキストボックスに反映 とは、そのテキストボックスのクラス名に設定するってこと?それとも、内容をTextプロパティに出力ってこと? まずは実データの中身をダミーデータに置き換えて公開してください。 そして「この様な出力を行いたい」という結果例も載せてください。 それ以外にも、載せれる情報は可能な限り公開をしてください。
お礼
ご回答ありがとうございます。 ファイルの中身ですが、 <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プロパティに出力を考えていました
- magicalpass
- ベストアンサー率58% (378/648)
例えば (1)テキストファイルを読み込み、StringReaderクラスを生成し、ReadLineメソッドで1行ずつ読み込む。 (2)読み込んだ1行の文字列から「<div class=」をInStrメソッドで検索。 (3)見つかれば、その先のクラス名を判定し、目的のクラス名ならデータを処理。 (4)次の1行を読み込み、繰り返し。 というようなやり方はどうでしょうか? クラス名が1つならいっそのこと「class=クラス名」をInStrメソッドで探した方が早そうですが。
お礼
ありがとうございました
お礼
大変さんこうになりました。 もっと勉強していきたいと思います ありがとうございました