XMLドキュメントをロードしましたが、XPathクエリを実行してXMLの特定のサブセットを選択したいと思います。XMLは
<?xml version="1.0"?>
<catalog xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications with
XML.</description>
</book>
</catalog>
手順は次のようになります
procedure RunXPathQuery(XML: IXMLDOMDocument2; Query: string);
begin
XML.setProperty('SelectionLanguage', 'XPath');
NodeListResult := XML.documentElement.selectNodes(Query));
ShowMessage('Found (' + IntToStr(NodeListResult.length) + ') nodes.');
end;
問題は、上記のXMLに対してXPathクエリ'/ catalog'を実行すると、(予想どおりに)1要素のノードリストが返されることです。ただし、クエリを削除:xsi
し
<catalog xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
て再実行すると、返されるノードリストは空になります。'xmlns'属性全体を削除すると、結果のノードリストにはもう一度1つの要素が含まれます。
だから私の質問はこれです:これを修正するために何ができますか?つまり、名前空間(または他の属性)に関係なく、MSXMLに正しい数のインスタンスを返すようにするにはどうすればよいですか(XPathクエリを実行するとき)?
ありがとう!