从 xml 文件中提取或 grep 值
extract or grep value from xml file
我正在使用 xgrep 和 xmlgrep 从 XML 文件中查找某些信息 (http://pastebin.com/1BJEWVJJ)
示例片段
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.2.014/cXML.dtd">
<cXML xml:lang="en" payloadID="2015-02-24T14:17:26_3764135.ConfirmationRequest@axis.mincom.com" timestamp="2015-02-24T14:17:26+10:00">
<Header>
<From>
<Credential domain="SpotlessBranchID">
<Identity>
L678</Identity>
</Credential>
<Credential domain="SupplierCustno">
<Identity>
SPOWOC</Identity>
</Credential>
<Credential domain="MincomAxis">
<Identity>
101000026139003</Identity>
</Credential>
</From>
<To>
<Credential domain="SpotlessSAPSupplierID">
<Identity>
0002010354</Identity>
</Credential>
<Credential domain="SpotlessSupplierID">
<Identity>
0002010354</Identity>
</Credential>
我想提取 SpotLessSupplierID 标识值(例如 0002010354)
我试过 xgrep -s 'Credential:Identity/.*/' PO_3764135.xml
但输出太多("Credential" 太多)
<!-- Start of node set (Search: Credential:Identity/.*/) -->
<!-- Node 0 in node set -->
<Credential domain="SpotlessBranchID">
<Identity>L678</Identity>
</Credential>
<!-- Node 1 in node set -->
<Credential domain="SupplierCustno">
<Identity>SPOWOC</Identity>
</Credential>
<!-- Node 2 in node set -->
<Credential domain="MincomAxis">
<Identity>101000026139003</Identity>
</Credential>
<!-- Node 3 in node set -->
<Credential domain="SpotlessSAPSupplierID">
<Identity>0002010354</Identity>
</Credential>
<!-- Node 4 in node set -->
<Credential domain="SpotlessSupplierID">
<Identity>0002010354</Identity>
</Credential>
<!-- Node 5 in node set -->
<Credential domain="MincomAxis">
<Identity>101000321896001</Identity>
</Credential>
<!-- Node 6 in node set -->
<Credential domain="SpotlessBranchID">
<Identity>L678</Identity>
</Credential>
<!-- Node 7 in node set -->
<Credential domain="MincomAxisTPID">
<Identity>101000026139</Identity>
</Credential>
<!-- End of node set -->
XmlStarlet在这些情况下是一个非常有用的工具,你可以下载并试试这个:
xmlstarlet sel -t -m "//header/To/Credential[@domain = 'SpotlessSAPSupplierID']" -v Identity -n /path_to_your_xml_file
用于文档:这是最好的 link:
XmlStarlet
我正在使用 xgrep 和 xmlgrep 从 XML 文件中查找某些信息 (http://pastebin.com/1BJEWVJJ)
示例片段
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.2.014/cXML.dtd">
<cXML xml:lang="en" payloadID="2015-02-24T14:17:26_3764135.ConfirmationRequest@axis.mincom.com" timestamp="2015-02-24T14:17:26+10:00">
<Header>
<From>
<Credential domain="SpotlessBranchID">
<Identity>
L678</Identity>
</Credential>
<Credential domain="SupplierCustno">
<Identity>
SPOWOC</Identity>
</Credential>
<Credential domain="MincomAxis">
<Identity>
101000026139003</Identity>
</Credential>
</From>
<To>
<Credential domain="SpotlessSAPSupplierID">
<Identity>
0002010354</Identity>
</Credential>
<Credential domain="SpotlessSupplierID">
<Identity>
0002010354</Identity>
</Credential>
我想提取 SpotLessSupplierID 标识值(例如 0002010354)
我试过 xgrep -s 'Credential:Identity/.*/' PO_3764135.xml
但输出太多("Credential" 太多)
<!-- Start of node set (Search: Credential:Identity/.*/) -->
<!-- Node 0 in node set -->
<Credential domain="SpotlessBranchID">
<Identity>L678</Identity>
</Credential>
<!-- Node 1 in node set -->
<Credential domain="SupplierCustno">
<Identity>SPOWOC</Identity>
</Credential>
<!-- Node 2 in node set -->
<Credential domain="MincomAxis">
<Identity>101000026139003</Identity>
</Credential>
<!-- Node 3 in node set -->
<Credential domain="SpotlessSAPSupplierID">
<Identity>0002010354</Identity>
</Credential>
<!-- Node 4 in node set -->
<Credential domain="SpotlessSupplierID">
<Identity>0002010354</Identity>
</Credential>
<!-- Node 5 in node set -->
<Credential domain="MincomAxis">
<Identity>101000321896001</Identity>
</Credential>
<!-- Node 6 in node set -->
<Credential domain="SpotlessBranchID">
<Identity>L678</Identity>
</Credential>
<!-- Node 7 in node set -->
<Credential domain="MincomAxisTPID">
<Identity>101000026139</Identity>
</Credential>
<!-- End of node set -->
XmlStarlet在这些情况下是一个非常有用的工具,你可以下载并试试这个:
xmlstarlet sel -t -m "//header/To/Credential[@domain = 'SpotlessSAPSupplierID']" -v Identity -n /path_to_your_xml_file
用于文档:这是最好的 link: XmlStarlet