XML parsing, TXMLDocument

前端 未结 3 1792
南笙
南笙 2020-12-04 23:13

I have a problem with parsing XML.

How to get field values se_url and phrase?
I need to get link1_1, link1_2

3条回答
  •  借酒劲吻你
    2020-12-04 23:35

    Try this:

    uses ComObj, MSXML;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      xml: IXMLDOMDocument;
      node: IXMLDomNode;
      nodes_row, nodes_se: IXMLDomNodeList;
      i, j: Integer;
      url: string;
    begin
      // put url or file name
      url := 'http://softez.pp.ua/gg.xml';
    
      xml := CreateOleObject('Microsoft.XMLDOM') as IXMLDOMDocument;
      xml.async := False;
      xml.load(url); // or use loadXML to load XML document using a supplied string
      if xml.parseError.errorCode <> 0 then
        raise Exception.Create('XML Load error:' + xml.parseError.reason);
    
      Memo1.Clear;
      nodes_row := xml.selectNodes('/doc/data/row');
      for i := 0 to nodes_row.length - 1 do
      begin
        node := nodes_row.item[i];
        Memo1.Lines.Add('phrase=' + node.selectSingleNode('phrase').text);
        nodes_se := node.selectNodes('search_engines/search_engine/se_url');
        for j := 0 to nodes_se.length - 1 do
        begin
          node := nodes_se.item[j];
          Memo1.Lines.Add('url=' + node.text);
        end;
        Memo1.Lines.Add('--------------');
      end;
    end;
    

    Result:

    phrase=key1
    url=link1_1
    url=link1_2
    --------------
    phrase=key2
    url=link2_1
    url=link2_2
    --------------
    

    A Reference to IXMLDOMDocument

提交回复
热议问题