파일이 있습니다. 거기에서 dataTemplate 이름을 추출해야 합니다. datalob=XXPFARCUDO_DATA의 값이 필요합니다.
<?xml version="1.0" encoding="windows-1252" ?>
<dataTemplate name="XXPFARCUDO_DATA" description="Ctrole de cohnce des clits doeux et conteeux" Version="1.0">
<parameters>
<parameter name="P_SOCIETE" dataType="character"/>
</parameters>
.
.
.
.
</dataTemplate>
코드가 있는데 작동하지 않아요
filename='XXPFARCUDO_DATA.xml'
LOBCODE=$(sed -n 's:.*<dataTemplate name="\(.*\)" description=".*:\1:p' "${filename}")
echo " --> ${LOBCODE} "
결과가 잘못되었습니다
--> XXPFARCUDO_DATA▒role de cohnce des clits doeux et conteeux" Version="1.0">
답변1
XML이 잘 구성되어 있다고 가정합니다.
<?xml version="1.0" encoding="windows-1252"?>
<dataTemplate name="XXPFARCUDO_DATA" description="Ctrole de cohnce des clits doeux et conteeux" Version="1.0">
<parameters>
<parameter name="P_SOCIETE" dataType="character"/>
</parameters>
</dataTemplate>
다음을 통해 노드 name
의 속성 값을 얻을 수 있습니다.dataTemplate
XML 스타이와 같이:
LOBCODE=$( xml sel -t -v '/dataTemplate/@name' "$filename" )
XMLStarlet은 때때로 as xmlstarlet
대신 as로 설치됩니다 xml
.
사용 xmllint
:
LOBCODE=$( xmllint --xpath 'string(/dataTemplate/@name)' "$filename" )
오류가 발생하기 쉽고 깨지기 쉬우므로 사용하지 마십시오 sed
.