linux中的xmllint用法(shell脚本)

时间:2015-03-03 16:40:47

标签: sh ksh xmllint

    <?xml version="1.0" encoding="utf-8"?><DataTransfer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://cbi.marian.com/xmlschemas/jde_interface_v1.0.xsd"><Summary>
    <PO>
        <PONumber>1798128110160-1</PONumber>
        <PORevision>6</PORevision>
        <POSystemID>273906</POSystemID>
        <OrderDate>19-02-2015</OrderDate>
        <RequiredDate>15-10-2016</RequiredDate>
        <PromisedDeliveryDate>27-03-2017</PromisedDeliveryDate>
        <RetentionPercentage></RetentionPercentage>
        <POReference1>1798128110160-1</POReference1>
        <POReference2></POReference2>
    </PO>
    <POItem>
        <LineNumber>   1</LineNumber>
        <ItemDescription>Enclosure containing </ItemDescription>
        <POReference1>1798128110160-1</POReference1>
        <POReference2></POReference2>
    </POItem>
        <POItem>
        <LineNumber>  2</LineNumber>
        <ItemDescription>Compressor</ItemDescription>
        <POReference1>1798128110160-1</POReference1>
        <POReference2></POReference2>
    </POItem>
    <POItem>
        <LineNumber>  3</LineNumber>
        <ItemDescription>Cooler</ItemDescription>
        <POReference1>1798128110160-1</POReference1>
        <POReference2></POReference2>
    </POItem>

在上面的xml中,我想只读取POItem下的第一个LineNumber。我使用以下命令:

echo cat "//POItem/LineNumber/text()" | xmllint --shell po123.xml

这将显示所有3个LineNumber值。是否可以在不使用sed命令的情况下仅获取第一个LineNumber值。 XML文件名是po123.xml

我目前的xmllint中没有xpath。

1 个答案:

答案 0 :(得分:1)

试试这个:

echo cat '//POItem[1]/LineNumber/text()' | xmllint --shell po123.xml

这将打印第一个LineNumber元素的POItem