Используя XPath, я должен найти его через
я есть следующий фрагмент XML как часть большого файла XML, который я обрабатываю с использованием последнего снимка OmniXML:
<OrderRequestHeader>
<!-- snipped XML bits here -->
<ShipTo>
<Address addressID="">
<Name xml:lang="en">SOME COMPANY</Name>
<PostalAddress name="default">
<DeliverTo>John Doe</DeliverTo>
<Street>123 Any St</Street>
<City>Nowhere</City>
<State>AK</State>
<PostalCode>99999</PostalCode>
<Country isoCountryCode="US">United States</Country>
</PostalAddress>
<Email/>
<Phone>
<TelephoneNumber>
<CountryCode isoCountryCode=""/>
<AreaOrCityCode/>
<Number></Number>
</TelephoneNumber>
</Phone>
</Address>
</ShipTo>
<!-- more XML stuff follows -->
</OrderRequestHeader>
В настоящее время у меня есть переменная, указывающая на<ShipTo>
узел, и хотите выбрать содержимое<Name>
узел. Я использую следующий код, ноNode2
идет вверхNil
...
procedure ProcessXML;
var
Node1, Node2: IXMLNode;
begin
Node1 := FindNode(OrderHeader, 'ShipTo');
// the above is working. Node points to the <ShipTo> node
Node2 := SelectNode(Node1, 'Name');
// the above line doesn't work. Node2 is Nil
end;
ПочемуNode2
Nil
? Согласно помощи вOmniXMLUtils.pas
, SelectNode
выберет один узел, возможно, более одного уровня ниже. Там определенно<Name>
узел. Даже пытаясь найти узел черезXPathSelect(Node1, 'Name');
возвращает пустой список Я неправильно использую OmniXML? Можно ли добраться до<Name>
узел без предварительного выбора<Address>
узел?