DOMElement в Delphi - PullRequest
       61

DOMElement в Delphi

0 голосов
/ 23 июля 2011

как я могу использовать .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 ]

2 голосов
/ 23 июля 2011

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;

НТН

0 голосов
/ 09 марта 2017

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;

Надеюсь, это поможет.:)

...