2010年11月7日日曜日

◆XMLファイルを扱う2

PowerShell: ◆XMLファイルを扱うではXMLファイルの参照を行ったので、今度は更新をしてみる。
更新はこんな感じ。
$configFile = "d:\desktop\config.xml"
Get-Content $configFile | tee -Variable config
"--------------------------"
$xml = [xml]$config
$xml.config.param1 = "9999"
$xml.Save($configFile)
gc $configFile

結果は、
<config>
  <param1>1111</param1>
  <param2>2222</param2>
  <param3>3333</param3>
</config>
--------------------------
<config>
  <param1>9999</param1>
  <param2>2222</param2>
  <param3>3333</param3>
</config>

前回と同様にこんなXMLの場合、
<Address>
    <Person type="Personal">
        <Name>佐藤</Name>
        <Phone>111-1111</Phone>
    </Person>
    <Person type="Business">
        <Name>吉田</Name>
        <Phone>333-3333</Phone>
    </Person>
</Address>
$file = "d:\desktop\sample.xml"
$xml = [xml](Get-Content d:\desktop\sample.xml -Encoding UTF8)
#$xml.Address.Person[0].Name + "`n"
$xml.Address.Person[0].Name = "高橋"
$xml.Save($file)
gc $file -Encoding UTF8
結果は

佐藤
<Address>
  <Person type="Personal">
    <Name>高橋</Name>
    <Phone>111-1111</Phone>
  </Person>
  <Person type="Business">
    <Name>吉田</Name>
    <Phone>333-3333</Phone>
  </Person>
</Address>

追加する場合は、
$file = "d:\desktop\sample.xml"
$xml = [xml](Get-Content d:\desktop\sample.xml -Encoding UTF8)
$p2 = $xml.CreateElement("Phone2")
$p2.InnerText = "999-999"
$p2.SetAttribute("testatt","test")
[void]$xml.Address.Person[0].AppendChild($p2)
$xml.Save($file)
gc $file -Encoding UTF8

結果はこんな感じ。
<Address>
  <Person type="Personal">
    <Name>高橋</Name>
    <Phone>111-1111</Phone>
    <Phone2 testatt="test">999-999</Phone2>
  </Person>
  <Person type="Business">
    <Name>吉田</Name>
    <Phone>333-3333</Phone>
  </Person>
</Address>

おそらくXMLの扱い方はいろいろあると思うので、こんなやり方でとりあえずできるよという事で。

0 件のコメント:

コメントを投稿