最新の OmniXML スナップショットを使用して処理している、より大きな XML ファイルの一部として、次の XML スニペットを取得しました。
<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>
ですか?