2015-03-03 5 views
1
<?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 Я хочу читать только 1-й номер строки под POItem. Я использую следующую команду:Использование xmllint в linux (shell script)

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

Отображается все 3 значения LineNumber. Возможно ли получить только одно значение LineNumber без использования команды sed. Имя XML-файла - po123.xml

У меня нет xpath в моем текущем xmllint.

ответ

1

Попробуйте это:

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

Это печатает LineNumber первого POItem элемента.

+0

это сработало спасибо. – user3814005

Смежные вопросы