【发布时间】:2014-12-08 04:29:03
【问题描述】:
这是我的 xml 文件 (content.xml):
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head></head>
<body>
<h1>Lorem ipsum dolor sit amet</h1>
</body>
</html>
这是我在 Delphi (XE5) 中的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
doc: IXMLDocument;
Sel: IDOMNodeSelect;
List : IDOMNodeList;
query: String;
begin
content := TFile.ReadAllText('C:\temp\content.xml');
doc := TXMLDocument.Create(Application);
doc.LoadFromXML(content);
doc.Active := True;
query := '//descendant::html';
Sel := doc.DOMDocument as IDomNodeSelect;
List := Sel.selectNodes(query);
// List.length is 0 !!!!
end;
为什么 List 为空的问题,应该包含四个元素:HTML、head、body、h1(即“html”标签及其所有子标签。根据http://www.w3schools.com/xpath/xpath_syntax.asp XPath 语法,我尝试了这些选项:
//html/*
/html
/html/*
它们都不适合我,所以此时我不知道查询是否正常或我的代码在另一点失败。
【问题讨论】:
-
肯定是重复的,因此我强烈怀疑这不会被否决/关闭。同时看看this。
-
嗨,感谢您的回答,我现在已经尝试过,但没有工作,首先我使用的是 IDomNode,我需要获取 IDOMNodeList,而且我希望查询有效,因为遵循 XPath 语法来自 W3S。
-
嗨,笨蛋,我正在使用这个theroadtodelphi.wordpress.com/2013/05/29/…,你可以看到我的示例几乎相同,但仍然无法正常工作。