HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

DIR parancs eredményének tárolása XML-ben


Példaprogram letöltése

6885 bájt

Olyan függvényt hozunk létre a mellékelt példában, mely képes arra, hogy egy megadott mappában lévő állományokat és azok adatait XML-ben szolgáltassa számunkra.
Egy másik függvényt is készítünk, mellyel ez az XML eredmény egy DataSet-té konvertálható, így az eredményt könnyedén megjeleníthetjük egy DataGrid-ben.
Végül egy olyan függvényt hozunk létre, mellyel az XML eredményt sztringként kapjuk meg.

Kezdjük azzal a függvénnyel, mely az XML tartalmat állítja elő. Ez lesz a GetDirContent. Paraméterként annak a mappának az elérési útvonalát kell megadnunk, melynek tartalmára kíváncsiak vagyunk. Visszatérési értékként egy XmlDocument osztályt kapunk, melyben rendelkezésre áll az összes szükséges adat.
Public Shared Function GetDirContent(directory As String) As XmlDocument
Az XML dokumentum írását a XmlTextWriter osztály segíti. Ennek létrehozásához szükségünk van egy StringWriter osztályra.
         Dim sw As New StringWriter()
         Dim xtw As New XmlTextWriter(sw)
Első lépésként a dokumentumunkban az XML deklarációt kell elhelyezni a WriteStartDocument függvénnyel.
         xtw.WriteStartDocument(True)
Ez az alábbi szöveget eredményezi:
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
Következhet a megadott mappáról az információ gyűjtése. Ehhez egy DirectoryInfo osztályt használunk fel.
         Dim di As New DirectoryInfo(directory)
         Dim b As Boolean = True
Egy ciklus segítségével végigmegyünk az összes mappában talált elemen.
         For Each fsi In  di.GetFileSystemInfos()  
A ciklusban csak egy alkalommal van szükség arra, hogy egy DirectoryList bejegyzést helyezzünk el az XML-ben. Itt egy attribútumban tároljuk, hogy melyik az a mappa, melyet feldolgoztunk.
            If b = True Then
               xtw.WriteStartElement("DirectoryList", "")
               Dim sFullName As String = fsi.FullName
               Dim sName As String = fsi.Name
               Dim sDir As String = sFullName.Substring(0, sFullName.Length - sName.Length)
               xtw.WriteAttributeString("dir", sDir)
               b = False
            End If    
Fenti kód az alábbi eredményt szolgáltatja az XML-ben:
<DirectoryList dir="D:\So\Bso\0101\ListDir\">    
E csomópont alá kerülnek a FileSystemInfo bejegyzések, melyből annyi lesz, ahány állományt, illetve almappát találunk a megadott mappán belül. Létrehozva a FileSystemInfo csomópontot, tároljuk alatta az összes szükséges információt az adott elemről.
            xtw.WriteStartElement("FileSystemInfo", "")
            xtw.WriteElementString("Name", fsi.Name)
            ...
Fenti kód az alábbi eredményt szolgáltatja az XML-ben:
  <FileSystemInfo>
    <Name>App.ico</Name>
    <Created>2002.09.27. 13:22:32</Created>
    <LastAccess>2002.09.27. 13:22:32</LastAccess>
    <LastWrite>2002.09.27. 13:22:32</LastWrite>
    <IsFile>True</IsFile>
    <IsDir>False</IsDir>
    <ReadOnly>False</ReadOnly>
  </FileSystemInfo>           
A ciklus végeztével csak zárnunk kell a megnyitott DirectoryList csomópontot, illetve az XML dokumentumot.
         xtw.WriteEndElement()
         xtw.WriteEndDocument()
Utolsó lépésként létrehozunk egy XmlDocument osztályt, melybe betöltjük a már létrehozott XML dokumentumot és ezt adjuk a függvény visszatérési értékének.
         Dim sr As New StringReader(sw.ToString())
         Dim xd As New XmlDocument()
         xd.Load(sr)
         Return xd
Most, hogy adott egy függvényünk, mely egy mappa tartalmát XML-ben adja vissza, így már egyszerű a helyzetünk, ha ezt nem XmlDocument formában szeretnék felhasználni, hanem sztringként. Ehhez készítünk egy GetDirInString nevű függvényt, mely meghívja az imént létrehozott GetDirContent függvényt. Így rendelkezésre áll az eredmény XmlDocument osztályban.
      Public Shared Function GetDirInString(directory As String) As String
         Dim s As String = ""
         Dim xd As XmlDocument = GetDirContent(directory)
         If Not (xd Is Nothing) Then
Ezek után egy StringWriter osztályt létrehozunk és ebbe a stream-be mentjük az XmlDocument tartalmát. Felhasználva a StringWriter osztály ToString függvényét, megkapjuk az XML dokumentumot sztringként.
            Dim sw As New StringWriter()
            xd.Save(sw)
            s = sw.ToString()
         End If
         Return s
      End Function 'GetDirInString
Nézzük most azt az esetet, amikor egy DataSet-ben szeretnénk az eredményt látni. Ehhez a GetDirInDataset függvényt készítjük el. Itt első lépésként egy sztringbe kérjük le az eredményt az előbbi GetDirInString függvényünkkel.
Ha ez adott, akkor létrehozunk egy XmlDataDocument osztályt, melynek DataSet property-jén keresztül feltöltjük a már rendelkezésre álló XML-t. Így rendelkezésünkre áll egy DataSet, melyet már csak vissza kell adnunk.
      Public Shared Function GetDirInDataset(directory As String) As DataSet
         Dim s As String = GetDirInString(directory)
         Dim xdd As New XmlDataDocument()
         xdd.DataSet.ReadXml(New StringReader(s))
         Return xdd.DataSet
      End Function 'GetDirInDataset
A felhasználáshoz attól függően, hogy milyen típusú adatra van szükségünk, használhatjuk a különböző függvényeket. Például egy DataGrid-ben történő adatmegjelenítéshez a DataSet típust szolgáltató függvényt használjuk fel.
  Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.Click
    textBox2.Text = ListDirToXml.GetDirInString(textBox1.Text)
    dataGrid1.DataSource = ListDirToXml.GetDirInDataset(textBox1.Text)
    dataGrid1.DataMember = "FileSystemInfo"
  End Sub 'button1_Click

Cikksorozat

#IDKategóriaCikk címeSorozat
2591WindowsTippek és trükkök - RAS - Modem csengetési szám állítása1. rész
2622WindowsTippek és trükkök - Program futtatása más felhasználóként2. rész
2640WindowsA Windows ikonméretének megváltoztatása és Windows 2000 Asztaltémák3. rész
2657WindowsTippek és trükkök - Internet Explorer4. rész
2667WindowsTippek és trükkök5. rész
2684WindowsAlapértelmezések állítása, telepítési fájlok helye, intéző nézetek6. rész
2696WindowsBiztonsági trükkök7. rész
2702WindowsWindows XP trükkök8. rész
2729WindowsWindows 2000 és XP tippek, trükkök9. rész
2757WindowsRegistry trükkök10. rész
2784WindowsTippek, trükkök11. rész
2829WindowsTippek, trükkök12. rész
2889WindowsWindows XP tippek13. rész
2909WindowsTippek Windows XP-hez14. rész
2919WindowsWindows tippek15. rész
2924WindowsWindows tippek16. rész
2963WindowsWindows tippek17. rész
2973WindowsWindows Tippek18. rész
2981WindowsWindows tippek19. rész
2990WindowsTippek-trükkök20. rész
3027WindowsIIS tippek21. rész
3034WindowsWindows XP tippek-trükkök22. rész
3088WindowsWindows 2000/XP tippek, trükkök23. rész
3133WindowsWindows XP tippcsokor24. rész
3140WindowsWindows XP tippek, trükkök25. rész
3152WindowsXP és IIS tippek - trükkök26. rész
3158WindowsWindows XP tippek, trükkök27. rész
3168WindowsTippek, trükkök28. rész
3170WindowsRegistry trükkök29. rész
3179WindowsTippek, trükkök30. rész
3197WindowsWindows XP tippek, trükkök31. rész
3205WindowsTippek, trükkök32. rész
3214WindowsTippek, trükkök33. rész
3223WindowsTippek, trükkök34. rész
3233WindowsTippek, trükkök35. rész
3271WindowsTippek, trükkök36. rész
3307WindowsTippek, trükkök37. rész
3370WindowsTippek, trükkök38. rész
3399WindowsTippek, trükkök39. rész
3510WindowsTippek, trükkök40. rész
3611WindowsHardverrel kapcsolatos tippek, trükkök41. rész
3668WindowsRegistry trükkök42. rész
3711WindowsTippek, trükkök43. rész
3771WindowsTippek, trükkök44. rész
3801WindowsTippek, trükkök45. rész
3831WindowsTippek, trükkök46. rész
3891WindowsTippek, trükkök47. rész
3921WindowsTippek, trükkök48. rész
3981WindowsTippek, trükkök49. rész
4041WindowsTippek, trükkök50. rész
4071WindowsTippek, trükkök51. rész
4151WindowsTippek, trükkök52. rész
4171C#Tippek, trükkök53. rész
4211WindowsTippek, trükkök54. rész
4251WindowsTippek, trükkök55. rész
4281WindowsTippek, trükkök56. rész
3589DelphiTippek, trükkök57. rész
3718DelphiTippek, trükkök58. rész


Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |