Я предполагаю, что правильно сформированный XML ниже.Я добавил корневой узел с именем root
:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<ShipmentStop>
<StopSequence>1</StopSequence>
<LocationRef>
<LocationGid>
<Gid>
<Xid>LOCATION 1</Xid>
</Gid>
</LocationGid>
</LocationRef>
<ArrivalTime>
<EventTime>
<EstimatedTime>
<Date>20181128070000</Date>
</EstimatedTime>
</EventTime>
</ArrivalTime>
</ShipmentStop>
<ShipmentStop>
<StopSequence>2</StopSequence>
<LocationRef>
<LocationGid>
<Gid>
<Xid>LOCATION 2</Xid>
</Gid>
</LocationGid>
</LocationRef>
<ArrivalTime>
<EventTime>
<EstimatedTime>
<Date>20181129070000</Date>
</EstimatedTime>
</EventTime>
</ArrivalTime>
</ShipmentStop>
</root>
В исходном xpath вы использовали
ShipmentStop[/LocationRef/LocationGid/Gid/Xid='LOCATION 1'
or /LocationRef/LocationGid/Gid/Xid='LOCATION 2'][1]
Обратите внимание на использование /
в /LocationRef
.Когда вы делаете это, вы ищете из корневого узла вашего XML, таким образом, он потерпит неудачу.Чтобы использовать узел контекста, просто добавьте точку перед косой чертой, например
ShipmentStop[./LocationRef/LocationGid/Gid/Xid='LOCATION 1'
or ./LocationRef/LocationGid/Gid/Xid='LOCATION 2'][1]
, или вы можете удалить ./
в xpath.Например:
ShipmentStop[LocationRef/LocationGid/Gid/Xid='LOCATION 1'
or LocationRef/LocationGid/Gid/Xid='LOCATION 2'][1]
, поскольку LocationRef
является дочерним узлом ShipmentStop
узла.