Objektumok konvertálása szöveges információvá

Majd a 1.9.10 Objektumok mentése, visszatöltése fejezetben látni fogjuk, hogyan lehet a maga legteljesebb formájában elmenteni objektumokat fájlba az Export-CLIXML cmdlettel. De azt is látni fogjuk, hogy az eléggé nagyméretű fájlokat generál. Van többfajta köztes lehetőség az objektumok információtartalmának valamilyen szöveges formába konvertálására.

Az első ilyen a lehetőség az előző fejezet végén látható JSON formátum. A másik az XML adattá való konvertálás. Ezzel viszonylag bőséges információ megőrződik az eredeti objektumból, de azért nem annyira sok, mint az Export-CLIXML esetében. Nézzünk rá példákat:

PS C:\> Get-Item C:\PSKönyv\Mégújabb.txt | ConvertTo-Xml

 

xml                                     Objects

---                                     -------

version="1.0"                           Objects

Ebből persze nem látjuk még a szöveges információ-halmazt, mert a PowerShell az XML-t önálló objektumtípusként kezeli, de azért így is belenézhetünk:

PS C:\> (Get-Item C:\PSKönyv\Mégújabb.txt | ConvertTo-Xml).objects.object.prope

rty

 

Name                       Type                      #text

----                       ----                      -----

PSPath                     System.String             Microsoft.PowerShell.C...

PSParentPath               System.String             Microsoft.PowerShell.C...

PSChildName                System.String             Mégújabb.txt

PSDrive                    System.Management.Auto... C

PSProvider                 System.Management.Auto... Microsoft.PowerShell.C...

PSIsContainer              System.Boolean            False

VersionInfo                System.Diagnostics.Fil... File:             C:\P...

BaseName                   System.String             Mégújabb

Mode                       System.String             -a---

Name                       System.String             Mégújabb.txt

Length                     System.Int64              0

DirectoryName              System.String             C:\PSKönyv

Directory                  System.IO.DirectoryInfo   C:\PSKönyv

IsReadOnly                 System.Boolean            False

Exists                     System.Boolean            True

FullName                   System.String             C:\PSKönyv\Mégújabb.txt

Extension                  System.String             .txt

CreationTime               System.DateTime           2014.06.30. 20:49:32

CreationTimeUtc            System.DateTime           2014.06.30. 18:49:32

LastAccessTime             System.DateTime           2014.06.30. 20:49:32

LastAccessTimeUtc          System.DateTime           2014.06.30. 18:49:32

LastWriteTime              System.DateTime           2014.06.30. 20:49:32

LastWriteTimeUtc           System.DateTime           2014.06.30. 18:49:32

Attributes                 System.IO.FileAttributes  Archive

Látható, hogy egy fájl XMLesített változatában az Objects.Object.Property tulajdonsághierarchiában ott szunnyadnak az eredeti objektum legfontosabb tulajdonságai. De nézzük a szép XML szöveget a maga valójában:

PS C:\> (Get-Item C:\PSKönyv\Mégújabb.txt | ConvertTo-Xml).Save([console]::Out)

 

<?xml version="1.0" encoding="ibm852"?>

<Objects>

  <Object Type="System.IO.FileInfo">

    <Property Name="PSPath" Type="System.String">Microsoft.PowerShell.Core\File

System::C:\PSKönyv\Mégújabb.txt</Property>

    <Property Name="PSParentPath" Type="System.String">Microsoft.PowerShell.Cor

e\FileSystem::C:\PSKönyv</Property>

    <Property Name="PSChildName" Type="System.String">Mégújabb.txt</Property>

    <Property Name="PSDrive" Type="System.Management.Automation.PSDriveInfo">C<

/Property>

    <Property Name="PSProvider" Type="System.Management.Automation.ProviderInfo

">Microsoft.PowerShell.Core\FileSystem</Property>

    <Property Name="PSIsContainer" Type="System.Boolean">False</Property>

    <Property Name="VersionInfo" Type="System.Diagnostics.FileVersionInfo">File

:             C:\PSKönyv\Mégújabb.txt

InternalName:

OriginalFilename:

FileVersion:

FileDescription:

Product:

ProductVersion:

Debug:            False

Patched:          False

PreRelease:       False

PrivateBuild:     False

SpecialBuild:     False

Language:

</Property>

    <Property Name="BaseName" Type="System.String">Mégújabb</Property>

    <Property Name="Mode" Type="System.String">-a---</Property>

    <Property Name="Name" Type="System.String">Mégújabb.txt</Property>

    <Property Name="Length" Type="System.Int64">0</Property>

    <Property Name="DirectoryName" Type="System.String">C:\PSKönyv</Property>

    <Property Name="Directory" Type="System.IO.DirectoryInfo">C:\PSKönyv</Prope

rty>

    <Property Name="IsReadOnly" Type="System.Boolean">False</Property>

    <Property Name="Exists" Type="System.Boolean">True</Property>

    <Property Name="FullName" Type="System.String">C:\PSKönyv\Mégújabb.txt</Pro

perty>

    <Property Name="Extension" Type="System.String">.txt</Property>

    <Property Name="CreationTime" Type="System.DateTime">2014.06.30. 20:49:32</

Property>

    <Property Name="CreationTimeUtc" Type="System.DateTime">2014.06.30. 18:49:3

2</Property>

    <Property Name="LastAccessTime" Type="System.DateTime">2014.06.30. 20:49:32

</Property>

    <Property Name="LastAccessTimeUtc" Type="System.DateTime">2014.06.30. 18:49

:32</Property>

    <Property Name="LastWriteTime" Type="System.DateTime">2014.06.30. 20:49:32<

/Property>

    <Property Name="LastWriteTimeUtc" Type="System.DateTime">2014.06.30. 18:49:

32</Property>

    <Property Name="Attributes" Type="System.IO.FileAttributes">Archive</Proper

ty>

  </Object>

</Objects>

Megkaptam volna az XML szöveget az OuterXML tulajdonság kiolvasásával is, csak az nem ilyen szépen formázott, mint a Save metódus kimenete.

Másik gyakran alkalmazott módszer, hogy JSON  (JavaScript Object Notation) formátumban tároljuk az objektumokat. A koncepció nagyon hasonló az XML adattároláshoz, csak itt a tag-ek kezelése sokkal tömörebb, kisebb lesz a fájl vagy szöveg, ahogy ezt az előző fejezetben is láttuk.



Word To HTML Converter