¿Cómo recupero un valor usando xmlstarlet?
Estoy intentando recuperar el valor inicial 4.7 del siguiente archivo xml:
<?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">
Intenté lo siguiente pero no funcionó:
%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
Respuesta1
En PowerShell es solo líneas:
[xml]$XmlDocument = Get-Content -Path C:\...\test.xml
$XmlDocument.GCContextualMethod.method.GC.Column.Setpoints.Flow.InitialValue | Out-File c:\temp\result.txt
Guarde esto en algún script.ps1 y cambie la ruta al xml real. El resultado 4.7 se enviará al archivo txt.
Tenga en cuenta que en un archivo xml real todos los elementos como "GCContextualMethod" o "method" deben tener uno de cierre emparejado con el de apertura. Eso no está representado en su ejemplo. Entonces, al crear una muestra, terminé con xml con:
</GC>
</method>
</GCContextualMethod>