如何在xml文件中查找定位某个元素(按照类似于路径的格式:“bbb/ccc/ddd/”)。
不知XMLNode.FindNamespaceDecl()方法行不行。procedure TForm1.TreeView1DblClick(Sender: TObject);
Var
  XMLDocument :IXMLDocument;
  XMLNode,XMLNode1 :IXMLNode;
  i:Integer;
begin
  XMLDocument := TXMLDocument.Create( 'd:\aaa.xml' );
  XMLDocument.Active := True;
  XMLNode := XMLDocument.DocumentElement;
  XMLNode := XMLNode.FindNamespaceDecl('????');
  XMLNode := nil;
  XMLDocument := nil;
end;

解决方案 »

  1.   

    var
      FPath: String;
      FRoot: IXMLDOMNode;
      FNode: IXMLDOMNode;
    begin
    ...
    FPath := '//Budded/@Name';  FNode := FRoot.selectSingleNode(FPath);
    end;
      

  2.   

    IXMLNode的FindNamespaceDecl()方法怎么用呀?
      

  3.   

    我给你看个我做的例子,这样你可以参考参考:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, xmldom, XMLIntf, StdCtrls, msxmldom, XMLDoc;type
      TForm1 = class(TForm)
        XMLDocument1: TXMLDocument;
        Button1: TButton;
        Memo1: TMemo;
        Edit1: TEdit;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
     //k: integer;
     nn : IXMLNode;
     vv : IXMLNode;
     kk : String;
     k :IXMLNode;//IXMLNodeList;
     c : Integer;
    begin
    {k := 8;
    k := self.XMLDocument1.DocumentElement.ChildValues['checkdate'];
    edit1.Text := Inttostr(k);
    }//--添加节点
    nn := XMLDocument1.DocumentElement.AddChild('header');
    //nn.Attributes[''] := '';
    vv := nn.AddChild('receiveflag');
    vv.Text := 'jjjj';
    vv := nn.AddChild('checkdate');
    vv.Text := 'dfd';
    XMLDocument1.SaveToFile('aa.xml');//-- 读取节点的值
    k := XMLDocument1.DocumentElement.ChildNodes[0];
    c := XMLDocument1.DocumentElement.ChildNodes.Count;//edit1.Text := inttostr(c)+XMLDocument1.FileName;
    //showmessage(k);
    edit1.Text := k.ChildNodes['receiveflag'].Text;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
     a : TXMLDocument;
    begin
      a:=TXMLDocument.Create(self);
      a.FileName:='http://localhost/xml/web.xml';
      a.SaveToFile('xml.xml');
    end;end.注意,记得把XMLDocument1组件的路径设置好。
      

  4.   

    budded(All By Myself)、wudi_1982(︻┳═一) 、hugoon(ギギ孤独code客ギギ) 
    谢谢各位,我现在是想在xml文件中检索,就是按照指定条件查找,如题。再帮帮忙,谢了先。
      

  5.   

    budded(All By Myself):
    我按照你的方式写了一个事件,但总是有错误。
    代码如下:
    *************************** 
    procedure TForm1.Button1Click(Sender: TObject);
    var
      FPath: String;
      doc:   IXMLDOMDocument;
      FRoot: IXMLDOMNode;
      FNode: IXMLDOMNode;
    begin
      doc := CoDOMDocument.create;
      doc.load('H:\delphi\xml\books.xml');
      froot:=doc.documentElement;
      FPath := '/bookstore/book';
      FNode := FRoot.selectSingleNode(FPath);  ////此句有错误////
    end;
    ***************************'H:\delphi\xml\books.xml'文件内容如下:
    ***************************
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <bookstore>
    <book category="COOKING">
      <title lang="en">Everyday Italian</title>
      <author>Giada De Laurentiis</author>
      <year>2005</year>
      <price>30.00</price>
    </book>
    </bookstore>
    ***************************