2016-07-21 10 views
1

私は現在再生中の曲が更新されるXMLファイルをスキャンするラジオ局用のプログラムを作成しています。その後、引き出されたアーティスト名と曲名をXMLから私はウェブ上のデータを表示することができるようにURL。 XMLは、常に私は常に変化を見たいファイルを必要とする変更されているのでFileSystemWatcher XML VB.Net

Imports System.IO 
Imports System.Xml 
Public Class Form1 

    Private Sub BrowseButton_Click(sender As Object, e As EventArgs) Handles BrowseButton.Click 

     If OpenFileDialog1.ShowDialog = DialogResult.OK Then 

      XMLFileDirectoryTextBox.Text = OpenFileDialog1.FileName 

     End If 

    End Sub 

    Private Sub StartButton_Click(sender As Object, e As EventArgs) Handles StartButton.Click 

     If (XMLFileDirectoryTextBox.Text = "") Then 

      MessageBox.Show("XML file not found. Please select your XML file and try again.") 
     Else 

      If (System.IO.File.Exists(XMLFileDirectoryTextBox.Text.ToString())) Then 

       Dim document As XmlReader = New XmlTextReader(XMLFileDirectoryTextBox.Text.ToString()) 

       While (document.Read()) 

        Dim type = document.NodeType 

        If (type = XmlNodeType.Element) Then 

         If (document.Name = "ARTIST") Then 

          ArtistNameTextBox.Visible = True 
          ArtistNameTextBox.Text = document.ReadInnerXml.ToString() 

         End If 

         If (document.Name = "TITLE") Then 

          SongTitleTextBox.Visible = True 
          SongTitleTextBox.Text = document.ReadInnerXml.ToString() 

         End If 

        End If 

       End While 

      End If 

     End If 

    End Sub 

:ここ

は私はXMLから必要なデータをスキャンして表示するように書かれているコードです。このため、VBでSystemFileWatcherクラスを使用することに決めました。私はそれを行こうとしましたが、SystemFileWatcherが見ることができるのは、特定のファイルではなく変更のためにフォルダを見ることだけです。

私は非常にコード化しているので、申し訳ありませんが、上記のコード内の悪い技術があれば(私はまだ学んでいます)、誰かが私を助けてくれれば大いに感謝します。

ありがとうございました。

答えて

0

はい、ファイルを見ることができます。 good example on MSDNがあります。ここでは、単一のファイル時計というのわずかな適応です:

Public Sub CreateFileWatcher(ByVal path As String, ByVal filename as String) 
    'Create a new FileSystemWatcher and set its properties. 
    Dim watcher As New FileSystemWatcher() 
    watcher.Path = path 
    'Watch for changes in LastAccess and LastWrite times, and the renaming of files or directories. 
    watcher.NotifyFilter = NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName 
    'Only watch the file we are interested in 
    watcher.Filter = filename 

    'Add event handlers. 
    AddHandler watcher.Changed, AddressOf OnChanged 
    AddHandler watcher.Created, AddressOf OnChanged 
    AddHandler watcher.Deleted, AddressOf OnChanged 
    AddHandler watcher.Renamed, AddressOf OnRenamed 

    ' Begin watching. 
    watcher.EnableRaisingEvents = True 
End Sub 

' Define the event handlers. 
Private Shared Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs) 
    ' Specify what is done when a file is changed, created, or deleted. 
    Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType) 
End Sub 

Private Shared Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs) 
    ' Specify what is done when a file is renamed. 
    Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath) 
End Sub 
+0

C#の答えは[FileSystemWatcher.NotifyFilterプロパティ]のちょうどペーストであることが(https://msdn.microsoft.com/en-us/library/ system.io.filesystemwatcher.notifyfilter(v = vs.85).aspx/html?cs-save-lang = 1&cs-lang = csharp#code-snippet-5)これはリンクされていますが、ペーストであると言います – Plutonix

+0

@Matt Wilko私はこれを見ましたが、私の問題はopenfiledialogを持っていて、プログラムで使用する正確なXMLを定義できることです。上記のコードはフォルダを選択し、(* .txt)ファイルが私の場合は、XMLを持っているフォルダでは、私はその唯一のXMLが必要ではありません。 –

+0

ただ一つのファイルを見るべきである 'watcher.Filter =" MyExactFilename.xml "を変更してください –