データを取得してXMLファイルへ保存する(Oracle) (Windows PowerShell Tips)
データを取得してXMLファイルへ保存する その2(Oracle) (Windows PowerShell Tips)
で、Oracleから取得したデータをXML出力する例を紹介しました。
XMLを出力しただけでは見るのが不便なので、簡易XMLビューアを作ってみました。
実行例は下記のとおりです。
View-Xml.ps1
#===============================================================================
# View-Xml: XMLファイルを読み込んで表示する(簡易XMLViewer)
#
# 使用例
# PS > View-Xml XMLファイルパス
#
# copyright HIRO's.NET(http://hiro.wankuma.com/)
#===============================================================================
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()
}
使用方法は
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演算を行います。
です。
あとは、前回までのポイントを御参考下さい。