2012-02-07 70 views
4

美好的一天!我正在使用Delphi 2009和MSXML2_TLB库(IXMLDOM)。我需要选择最后一次会议节点:IXMLDOM不识别XPath last()函数?

Doc := CreateOleObject('Microsoft.XMLDOM') as IXMLDomDocument; 
Doc.loadXML(XmlStr); 
tmpNode:= Doc.selectSingleNode('//Meeting[last()]'); 

但在代码的最后一行上面我得到异常:

Project test.exe raised exception class EOleException with message: 'Unknown method 
//Meeting[-->last()<--]' 

有没有办法如何使用XPath选择最后一个节点或做我真的必须编写代码来获取节点列表,然后选择最后一个元素?

然而,一个版本信息:

Type Lib: C:\WINDOWS\system32\msxml6.dll (1) 
LIBID: {F5078F18-C551-11D3-89B9-0000F81FE221} 
HelpString: Microsoft XML, v6.0 

预先感谢您! Vojtech

回答

5

这是因为你使用的MSXML版本,其中没有定义last功能,据我知道这个功能是在V推出4.0 MSXML的

尝试

Doc := CreateOleObject('Msxml2.DOMDocument.6.0') as IXMLDomDocument; 
+0

最后()函数在W3C XPath中,而不是Microsoft在Microsoft MSXML中引入的1998年XPath方言中,尽管它们已经支持真实XPath多年,但据我所知,它仍然是默认的。 – 2012-02-07 18:19:14