XML スターレットを使用して XML 値を選択する方法

XML スターレットを使用して XML 値を選択する方法

xmlstarlet を使用して値を取得するにはどうすればよいですか?

次の XML ファイルから初期値 4.7 を取得しようとしています。

<?xml version="1.0"?>
<GCContextualMethod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.agilent.com/schemas/Analytical/Instrument/GC7890/2006/">
  <method xmlns="">
    <GC PostRunHoldTime="0" AutoPrepRun="UNKNOWN">
      <Inlet DeterminesReadiness="true">
        ...
      </Inlet>
      <Inlet DeterminesReadiness="true" />
      <Column DeterminesReadiness="true">
        ...
      </Column>
      <Column DeterminesReadiness="true">
        <Setpoints Mode="CONSTANT_FLOW">
          <Flow State="ON" InitialHoldTime="0" InitialValue="4.7" PostRunValue="4.7" />
        </Setpoints>
      </Column>
      <Column DeterminesReadiness="false">  

以下のことを試しましたが、うまくいきませんでした。

%cd%\resources\XML.EXE sel -t -c "/GCContextualMethod/method[@xmlns=""]/GC[@PostRunHoldTime="0"]/Column[2]/Setpoints[@Mode="CONSTANT_FLOW"]/Flow[@State="ON"]@InitialValue"  %cd%\GC78901.RapidControl.MethodXML.xml

答え1

PowerShell では次の行だけです:

[xml]$XmlDocument = Get-Content -Path C:\...\test.xml
$XmlDocument.GCContextualMethod.method.GC.Column.Setpoints.Flow.InitialValue | Out-File c:\temp\result.txt

これを script.ps1 に保存し、パスを実際の xml に変更します。結果 4.7 は txt ファイルに出力されます。

実際の XML ファイルでは、「GCContextualMethod」や「method」などのすべての要素には、開始要素とペアになった終了要素が必要です。これは例では示されていません。そのため、サンプルを作成するときに、次の XML で終了しました。

 </GC>
</method>
</GCContextualMethod>

関連情報