2016-06-13 8 views
1

xmlstarletを使用して値を取得するにはどうすればよいですか?xml starletを使用してxml値を選択する方法

私は、次の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 
+0

PowerShellのXML解析機能を使用して、サードパーティの実行可能ファイルが不要になるようにすることもできます。 SelectSingleNode( '// Flow [@State = \ "ON \"]')。InitialValue "'は、あなたの最初のプロパティのInitialValueプロパティを取得します。( 'xml '(gc GC78901.RapidControl.MethodXML.xml) Stateプロパティが "ON"のフロー要素。 – rojo

+0

こんにちは、アドバイスありがとうございます。コードはWindows 7のPC上で動かせるようにする必要があるので、PowerShellはオプションではないと思います。 – JvE010

+0

https://msdn.microsoft.com/en-us/library/ff637750(v=azure.10).aspx – rojo

答えて

2

ドキュメント要素GCContextualMethodには名前空間uri http://www.agilent.com/schemas/Analytical/Instrument/GC7890/2006/があります。

uriを宣言し、ドキュメント要素のロケーションステップで宣言の接頭辞を使用する必要があります。また、フィルター[@xmlns=""]は必要ありません。

XML.EXE sel 
    -N gc=http://www.agilent.com/schemas/Analytical/Instrument/GC7890/2006/ 
    -t -c 
    "/gc:GCContextualMethod/method/....." 
    %cd%\GC78901.RapidControl.MethodXML.xml 

XPath式をテストするには、式の一部を実行するときに返される内容を確認することをお勧めします。

+0

私はそのコードを使用する場合、それはURIをロードすることはできませんが、(外部実体を読み込むことができませんでした) %cd%/ resources/XML.EXE sel -t -c -n gc = http://www.agilent.com/schemas/Analytical/Instrument/GC7890/2006/ "/ gc:GCContextualMethod/method /"%cd %/ GC78901.RapidControl.MethodXML.xml – JvE010

+0

@ JvE010パラメータを並べ替える必要があります。 '-n'ではなく' -N'が '-t -c'の前に挿入されています。 – wero

関連する問題