XMLファイルから特定の値、つまりXMLタグの後の値(=記号の後など)を抽出する方法

XMLファイルから特定の値、つまりXMLタグの後の値(=記号の後など)を抽出する方法

ReferenceId="0128140321960O"私も RelatedReferenceId="SWCC"

<FinancialTransfersInstruction xmlns="middleware.frk.com/Schemas/Onetis/1.0">
<SWIFTHeader DeliveryMethod="SWIFT" MessageType="202" OrigSendDate="2019-11-15" Receiver="SBOSUS3UIMS" ReferenceId="0207060050180O" Sender="TESTBIC" SenderName="TEST INVESTORS, INC" TransType="NEW"/>
<PortalHeader BusinessUnit="GTS"/> <Wires> <Wire Currency="USD" Id="20706s5018.0" RelatedReferenceId="CCPM" </Wire> </Wires>
<FinancialTransfersInstruction/></FinancialTransfersInstruction>

値を抽出するコマンドを実行すると、参照も提供されます。 ReferenceIdタグ値のみが必要です。

cat *.xml |grep -P -o -e '(?<=ReferenceId=").*?(?=")'

ベストアンサー1

質問のXMLが正しくありません。変更されたXMLが実際に次のようになると仮定すると、

<?xml version="1.0"?>
<FinancialTransfersInstruction xmlns="https://middleware.frk.com/Schemas/Onetis/1.0">
  <SWIFTHeader DeliveryMethod="SWIFT" MessageType="202" OrigSendDate="2019-11-15" Receiver="SBOSUS3UIMS" ReferenceId="0207060050180O" Sender="TESTBIC" SenderName="TEST INVESTORS, INC" TransType="NEW"/>
  <PortalHeader BusinessUnit="GTS"/>
  <Wires>
    <Wire Currency="USD" Id="20706s5018.0" RelatedReferenceId="CCPM"/>
  </Wires>
</FinancialTransfersInstruction>

これを使用してxmlstarletXMLを解析し、適切な属性値を抽出できます。

xmlstarlet sel -t -v '//_:SWIFTHeader/@ReferenceId' bankfile.xml
0207060050180O

おすすめ記事