HIRO's.NET Blog

PowerShellが好き

目次

Blog 利用状況

ニュース

あわせて読みたい

書庫

日記カテゴリ

リンク

PowerShellでXMLファイルを取り扱う(PowerShell Tips)

今週は、PowerShellでのXMLの取り扱いについてまとめていこうかと思います。

まずはXMLファイルの読み込みから。

VB.NETだとXmlDocumentは

Dim xmlDoc As New System.Xml.XmlDocument
xmlDoc.Load("C:\Work\Test.xml")

みたいに記述します。

 

PowerShellでは

[xml]$doc = Get-Content "C:\Work\Test.xml"

と書くと、変数$docにXMLファイルが読み込まれます。

これで読み込むことができるのですが、エンコーディングはきちんと指定することをお勧めします。

エンコーディングを指定する場合は、-encodingパラメータを使用します。

-encodingパラメータには、

  • Unicode
  • UTF7
  • UTF8
  • UTF32
  • ASCII
  • BigEndianUnicode
  • Default
  • OEM

を指定することができます。

UTF8で読み込む場合は

[xml]$doc = Get-Content "C:\Work\Test.xml" -encoding UTF8

のように記述します。

で、[xml]でキャストした$docのデータ型はどうなっているかというと(GetType()メソッドで確認)

PS C:\Work> $doc.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    XmlDocument                              System.Xml.XmlNode

XmlDocumentとなっていることが確認できます。

で、使用可能なメンバーは(Get-Memberコマンドレットで確認)

PS C:\Work> $doc | Get-Member


   TypeName: System.Xml.XmlDocument

Name                        MemberType            Definition
----                        ----------            ----------
ToString                    CodeMethod            static System.String XmlNode(PSObject instance)
add_NodeChanged             Method                System.Void add_NodeChanged(XmlNodeChangedEventHandler value)
add_NodeChanging            Method                System.Void add_NodeChanging(XmlNodeChangedEventHandler value)
add_NodeInserted            Method                System.Void add_NodeInserted(XmlNodeChangedEventHandler value)
add_NodeInserting           Method                System.Void add_NodeInserting(XmlNodeChangedEventHandler value)
add_NodeRemoved             Method                System.Void add_NodeRemoved(XmlNodeChangedEventHandler value)
add_NodeRemoving            Method                System.Void add_NodeRemoving(XmlNodeChangedEventHandler value)
AppendChild                 Method                System.Xml.XmlNode AppendChild(XmlNode newChild)
Clone                       Method                System.Xml.XmlNode Clone()
CloneNode                   Method                System.Xml.XmlNode CloneNode(Boolean deep)
:
たくさんあるので省略
:

このようにPowerShellでは簡単にXMLを取り扱うことが可能です。


投稿日時 : 2008年3月3日 9:43

コメントを追加

No comments posted yet.
タイトル  
名前  
URL
コメント