fc2ブログ

トップ  >  サンプルソース  >  WEBページの差分(VB.NET)

WEBページの差分(VB.NET)

2010年01月09日

WEBページの変更前後の差分を表示するサンプル(ソース/コード)です。まず、ボタン1で変更前のバックアップをローカルディスクに保存します。次に、ボタン2で変更後のバックアップをローカルディスクに保存します。続いて、変更前のバックアップと変更後のバックアップをフォルダ比較し、変更、追加、削除があったファイルを一覧表示します。また、変更ファイルについてはファイル比較してHTMLの変更行を差分表示します。

WEB関係のツールやサンプルはこちら「WEB関係」です。

' ----------------------------------------------------------
' WEBページの変更前後の差分を表示するサンプル(VB.NET/VS2005)
' WEBページを比較するURL
Private url As String = "http://xxx.blog111.fc2.com/"
' 変更前のWEBページのバックアップフォルダ
Private pt1 As String = "D:\Temp\Html1"
' 変更後のWEBページのバックアップフォルダ
Private pt2 As String = "D:\Temp\Html2"

' 変更前のWEBページのバックアップ
Private Sub Button1_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click

    ' WEBページ(旧)のバックアップ
    WebBackup(url, pt1)
End Sub

' 変更後のWEBページのバックアップ
Private Sub Button2_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click

    ' WEBページ(新)のバックアップ
    WebBackup(url, pt2)

    ' バックアップフォルダのファイル情報の一覧取得
    Dim ls1 As String() = GetFList(pt1)
    Dim ls2 As String() = GetFList(pt2)

    ' バックアップフォルダ比較
    Dim fcm As String() = _
        FolderCompare(pt1, ls1, pt2, ls2)

    ' 差分解析&結果表示
    For i As Integer = 0 To UBound(fcm)
        Dim upd As String() = Split(fcm(i), vbTab)
        If upd(0) = "UPD" Then
            ' ファイル更新の時はファイルPATHと差分表示
            Dim fdf As String(,) = FileDiff( _
                pt1 & upd(1), pt2 & upd(1))
            For j As Integer = 1 To fdf.GetLength(1) - 1
                ' 差分情報(更新タイプ,行番号1,テキスト1,
                '                     行番号2,テキスト2)
                If fdf(0, j) <> "" Then
                    Debug.WriteLine( _
                        upd(0) & ":" & upd(1) & ":" & _
                        fdf(0, j) & vbTab & _
                        fdf(1, j) & vbTab & _
                        fdf(2, j) & vbTab & _
                        fdf(3, j) & vbTab & _
                        fdf(4, j))
                End If
            Next
        ElseIf upd(0) = "ADD" Then
            ' ファイル追加の時はファイルPATH表示
            Debug.WriteLine(upd(0) & ":" & upd(1))
        ElseIf upd(0) = "DEL" Then
            ' ファイル削除の時はファイルPATH表示
            Debug.WriteLine(upd(0) & ":" & upd(1))
        End If
    Next
End Sub

' テキストファイルを比較し結果を返します
' NonDiffNet.dllを参照設定しています。
Private Function FileDiff( _
    ByVal f1 As String, ByVal f2 As String) As String(,)

    ' テキストファイル読込
    Dim sr0 As IO.StreamReader = _
        New IO.StreamReader(f1, _
        System.Text.Encoding.GetEncoding("EUC-JP"))
    Dim sr1 As IO.StreamReader = _
        New IO.StreamReader(f2, _
        System.Text.Encoding.GetEncoding("EUC-JP"))
    Dim dt0 As String = sr0.ReadToEnd()
    Dim dt1 As String = sr1.ReadToEnd()
    sr0.Close()
    sr1.Close()

    ' テキストファイルの比較
    Dim NonDiff As New NonDiffNet.NonDiffClass()
    Return NonDiff.NonDiff( _
        dt0, dt1, False, 2, 1, 1, "file0", "file1")
End Function
' ----------------------------------------------------------

漢字コード変換(C#/VB.NET) | トップページへ戻る | フォルダ比較(VB.NET)

このページのトップに戻る

コメント

名前
題名
メールアドレス
WEBサイト
 
コメント
パスワード
  管理者にだけ表示を許可する

このページのトップに戻る

トラックバック

このページのトップに戻る