我已经加载了一个 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 查询“/目录”时,它返回(如预期)1 个元素的节点列表。但是,如果我从查询中删除:xsi
并
<catalog xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
重新运行查询,则返回的节点列表为空。如果我删除整个“xmlns”属性,则生成的节点列表再次具有 1 个元素。
所以我的问题是:我能做些什么来解决这个问题,即如何让 MSXML 返回正确数量的实例(在运行 XPath 查询时),而不管命名空间(或其他属性)如何?
谢谢!