我试图在 Delphi 中的 XML 文档中查找元素。我有这段代码,但它总是在日志中显示 0 个元素:
function TForm1.KannaSidu: Boolean;
var
Doc: IXMLDOMDocument;
List: IXMLDomNodeList;
begin
try
Doc := CreateOleObject('Microsoft.XMLDOM') as IXMLDomDocument;
Doc.async:=False;
Doc.load(Filename);
except
LogTx('Error on page');
end;
List:=Doc.selectNodes('/html/head');
LogTx(IntToStr(List.length)+' elements');
Result:=False;
end;
那么如何让 XPath 发挥作用呢?
在我在网上找到的示例代码中selectNodes
方法,它前面是设置文档的代码SelectionNamespaces财产通过setProperty
。有的甚至设定SelectionLanguage
, too.
Doc.setProperty('SelectionLanguage', 'XPath');
Doc.setProperty('SelectionNamespaces',
'xmlns:xsl=''http://www.w3.org/1999/XSL/Transform''');
根据您正在搜索的元素名称,我猜您正在处理 HTML 文件。基本的 HTML 元素位于http://www.w3.org/1999/xhtml名称空间,所以试试这个:
Doc.setProperty('SelectionNamespaces',
'xmlns:x=''http://www.w3.org/1999/xhtml''');
List := Doc.selectNodes('/x:html/x:head');
也可以看看:
使用 xmlns 时 selectNodes 不给出节点列表在微软的论坛上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)