Вы можете сделать это, как этот пример, если я хочу только один раз поймать букву минус a в строке, и ее можно проверить с помощью myRegex.IsMatch ()
^ [^ e] [е] {1} [^ е] $
Я предполагаю, что правильно сформированный 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
.