Cómo seleccionar el valor xml usando xml starlet

Cómo seleccionar el valor xml usando xml starlet

¿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>

información relacionada