Extraer valores específicos de la configuración XML
El XML de entrada parece varios bloques de:
<Parties>
<Party compid="CUST1" side="1">
<Connections>
<SocketConnection listenport="9029" />
</Connections>
</Party>
</Parties>
Mi objetivo es extraer para cada cliente sus parámetros específicos, como:
compid;listenport
Por ahora, puedo obtener todos los clientes usando
“`
xmlstarlet fo -D config.xml | xmlstarlet select -T -t -m '//Parties/Party' -v '@compid' -nl</p>
“`
El siguiente paso sería un bucle para cada cliente para obtener su listenport, pero
xmlstarlet fo -D config.xml | xmlstarlet select -T -t -m '//Parties/Party[@compid="CUST1"]' -v 'Connections/SocketConnection/@listenport'
o cualquier otro intento no devuelve nada.
¿Me falta algo en el filtrado usando [@value=string]
?
¡Gracias de antemano!
davy.ai
Parece que tu filtro utilizando
[@value=string]
es correcto, pero es posible que el valor que estás utilizando paracompid
no sea igual a ninguno de los valores en el archivo XML. Verifica que estás usando el valor correcto paracompid
.Además, en lugar de usar un ciclo para extraer el puerto de escucha de cada cliente, puedes modificar tu expresión XPath para extraer tanto
compid
comolistenport
a la vez utilizando el siguiente comando:Esto mostrará en pantalla el
compid
ylistenport
de cada cliente separados por un punto y coma.