DOMElement в Delphi
Как я могу использовать.getElementsByTagName в объекте DOMNodeList? Подобно:
procedure TForm1.selecionarClick(Sender: TObject);
var DOMDocument: iXMLDOMDocument;
DOMNodeList: iXMLDOMNodeList;
DOMNode: iXMLDOMNode;
DOMElement: iXMLDOMElement;
i: Integer;
begin
Memo.Text := '';
with DOMDocument do
begin
DOMDocument := coDOMDocument.Create;
DOMDocument.load( 'C:\Usuarios.xml' );
DOMDocument.preserveWhiteSpace := false;
DOMNodeList := DOMDocument.selectNodes( './/usuario[@codigo="'+codigo.Text+'"]/' );
for i := 0 to DOMNodeList.length - 1 do
begin
end;
end;
end;
Моя структура XML:
<?xml version="1.0" encoding="utf-8"?>
<usuarios>
<usuario codigo="1">
<nome>Name Node</nome>
<sobrenome>Last Name Node</sobrenome>
<cidade>City Node</cidade>
<estado>State Node</estado>
<email>Mail Node</email>
</usuario>
</usuarios>
2 ответа
GetElementsByTagName не является членом IXMLDOMNodeList, но является IXMLDOMDocument. В IXMLDOMNodeList для захвата по имени тега вы должны выполнить цикл с использованием этого типа конструкции:
for i := 0 to DOMNodeList.length - 1 do
begin
DOMNode := DOMNodeList[i];
if DOMNode.nodeName = 'aTagName' then
DoStuff(DOMNode);
// etc etc....
end;
НТН
IDOMElement поддерживает getElementsByTagName, который возвращает IDOMNodeList. IDOMElement является "подклассом" IDOMNode.
var
DOMNode: IDOMNode;
DOMElement: IDOMElement;
begin
if Node.DOMNode.nodeType <> ELEMENT_NODE then
exit;
// Obtain IDOMElement interface
DOMElement := (DOMNode as IDOMElement);
// Fetch node list
DOMNodeList := DOMElement.getElementsByTagName('search text');
// Do whatever with the list....
end;
Надеюсь, это поможет.:)