HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


PowerShellの開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > PowerShell Tips > 自作関数 Tips メニュー

08.簡易XMLビューア

 
UPDATE:2008/05/02    
 



簡易XMLビューアを作ってみました。
指定したXMLファイルをGUIで確認することができます。
実行結果は下記の通りです。

View-Xml.ps1

#===============================================================================
# View-Xml: XMLファイルを読み込んで表示する(簡易XMLViewer)
#
# 使用例
# PS > View-Xml XMLファイルパス
#
# copyright HIRO's.NET(http://hiros-dot.net/)
#===============================================================================
function global:View-Xml
{
Param($XmlFile)

#パスが指定されているか?
if ( $XmlFile.Length -eq $null )
{
Write-Host "XMLファイルを指定してください"
return
}

#存在するパスか?
if ( -not $(Test-Path $XmlFile) )
{
Write-Host $XmlFile + "は存在しません"
return
}

#データセットを作成し、XMLファイルを読み込む
$dtSet = New-Object System.Data.DataSet
$dtSet.ReadXml($XmlFile)

#===== Formの作成 =====
[reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
$form = New-Object System.Windows.Forms.Form
$form.Text = $XmlFile
$form.Width = 500
$form.Height = 400

#===== DataGridViewの作成 =====
$dgvXML = New-Object System.Windows.Forms.DataGridView
$dgvXML.Dock = [System.Windows.Forms.DockStyle]::Fill
$dgvXML.DataSource = $dtSet.Tables[0]
$form.Controls.Add($dgvXML)

#===== Panelの作成 =====
$panel1 = New-Object System.Windows.Forms.Panel
$form.Controls.Add($panel1)
$panel1.Dock = [System.Windows.Forms.DockStyle]::Bottom
$panel1.Height = 30

#===== [閉じる]ボタンの作成 =====
$btnClose = New-Object System.Windows.Forms.Button
$btnClose.Location = New-Object System.Drawing.Point(405, 4)
$btnClose.Text = "閉じる"
$btnClose.anchor = [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Right
$btnClose.Add_Click({$form.Close()})
$panel1.Controls.AddRange($btnClose)

#===== Formを表示 =====
$form.ShowDialog()
}


使用方法は関数名の後に、GUIで確認したいXMLファイルを指定します。

使用例

PS> View-Xml "XMLファイルのパス"

ポイントは
・データセットを作成して、XMLファイルを読み込む
$dtSet = New-Object System.Data.DataSet
$dtSet.ReadXml($XmlFile)

・データセットをDataGridViewに連結する
$dgvXML.DataSource = $dtSet.Tables[0]

・anchorプロパティ
 anchorプロパティは -bor 演算子を使うとうまくいきます。(-or演算子は試してみたところダメでした)
-bor はビットごとのOR演算を行います。

です。