トップ回答者
PowerShellで、XMLファイルの中から”必要なタグのみ抽出”したい。

質問
-
前提・実現したい事
---
XMLファイルの中から、必要なタグのみ抽出したいです。
①XMLファイルをPowerShellで読み込み。
↓
②必要なタグの抜き出し。
↓
③抜き出したタグを、別名.XML で保存。
【例】
下記の様なXMLファイルがあったとします。<?xml version="1.0" encoding="utf-8"?> <EXP_HogehogeWorkDataTable> <DocumentElement> <EXP_HogehogeWork id="EXP_HogehogeWork1"> <RecordId>00000055643</RecordId> <LastUpdateDate>2015-04-20T11:13:59.000+09:00</LastUpdateDate> </EXP_HogehogeWork> <EXP_HogehogeWork id="EXP_HogehogeWork2"> <RecordId>00000925544</RecordId> <LastUpdateDate>2015-04-21T11:23:45.000+09:00</LastUpdateDate> </EXP_HogehogeWork> <EXP_HogehogeWork id="EXP_HogehogeWork3"> <RecordId>00000007048</RecordId> <LastUpdateDate>2015-04-21T20:12:02.000+09:00</LastUpdateDate> </EXP_HogehogeWork> <EXP_HogehogeWork id="EXP_HogehogeWork4"> <RecordId>00001611089</RecordId> <LastUpdateDate>2015-04-23T13:23:08.000+09:00</LastUpdateDate> </EXP_HogehogeWork> </DocumentElement> </EXP_HogehogeWorkDataTable>
この中から、「 <RecordId> と <LastUpdateDate> 」のタグ部分のみ欲しいとして、
抜き出しを行いたいのですが、上手く行きません。
【理想の実行結果】
<RecordId>00000055643</RecordId> <LastUpdateDate>2015-04-20T11:13:59.000+09:00</LastUpdateDate> <RecordId>00000925544</RecordId> <LastUpdateDate>2015-04-21T11:23:45.000+09:00</LastUpdateDate> <RecordId>00000007048</RecordId> <LastUpdateDate>2015-04-21T20:12:02.000+09:00</LastUpdateDate> <RecordId>00001611089</RecordId> <LastUpdateDate>2015-04-23T13:23:08.000+09:00</LastUpdateDate>
【実際の実行結果】
RecordId LastUpdateDate -------- -------------- 00000055643 2015-04-20T11:13:59.000+09:00 00000925544 2015-04-21T11:23:45.000+09:00 00000007048 2015-04-21T20:12:02.000+09:00 00001611089 2015-04-23T13:23:08.000+09:00
◎タグ抜き出しに関して、参考にしたサイト
発生している問題・Error Message
---
上記サイトを参考に実行してみましたが、実際に取得出来た形式としては、SQLのテーブルの様な形で出力でした。
指定したタグ1行丸々欲しいです。
よろしくお願い致します。
実際のソースコード
---
試した事
---
補足情報(言語/FW/ツール等のVersion)
---
・PowerShell ver5.0
回答
-
タグの情報を含めて取得するには、XmlElementオブジェクトのOuterXmlプロパティを用いることで可能です。
$xml. EXP_HogehogeWorkDataTable. DocumentElement. EXP_HogehogeWork| foreach { $_["RecordId"].OuterXml $_["LastUpdateDate"].OuterXml }
Exp_HogehogeWork要素のInnerXmlプロパティを参照するともうちょっと簡略になりますが、RecordId要素とLastUpdateDate要素間に改行が入らないので、上記の手法を取ってみました。
- 回答としてマーク mie.8 2017年6月21日 2:11
すべての返信
-
タグの情報を含めて取得するには、XmlElementオブジェクトのOuterXmlプロパティを用いることで可能です。
$xml. EXP_HogehogeWorkDataTable. DocumentElement. EXP_HogehogeWork| foreach { $_["RecordId"].OuterXml $_["LastUpdateDate"].OuterXml }
Exp_HogehogeWork要素のInnerXmlプロパティを参照するともうちょっと簡略になりますが、RecordId要素とLastUpdateDate要素間に改行が入らないので、上記の手法を取ってみました。
- 回答としてマーク mie.8 2017年6月21日 2:11