假设
<?xml version="1.0" encoding="gb2312"?>
<index>
<node title="node1">
  <node title="node2">
  <node title="node3"> 
  <node title="node4">
  </node>
</node>
</node>
</node>
</index>
我想利用 /node1/node2/node3/node4 来直接访问 node4该怎么做呢?Delphi中的XML组建难道就不可以向 MSXML中的有 selectNodes/selectSingleNode 这些方法么?

解决方案 »

  1.   

    写错了,应该是 index/node1/node2/node3/node4 
      

  2.   

    我很老了么?大叔,还真的很老了!一转眼已经25了!
    你使用XML Active控件吧
    把M$ XMl Version 2.0导入
    导入后有5个组件,就有此方法了。
      

  3.   

    呵。这几天有点忙可以这样做的:procedure TForm1.Button1Click(Sender: TObject);
    var
      noderef:IXMLDOMNodeRef;
      root:IXMLDOMNode;
      Node:IXMLDOMNode;
    begin
      XMLDocument1.Active:=true;
      noderef:=XMLDocument1.DocumentElement.DOMNode as IXMLDOMNodeRef;
      root:=noderef.GetXMLDOMNode;
      node:=root.selectSingleNode('node1/node2/node3/node4');
      if Assigned(node) then
      begin
        ShowMessage(node.attributes.getnameditem('title').text);
      end;
    end;
      

  4.   

    等我把selectNodes的问题解决之后立刻结贴
      

  5.   

    偶刚开始还准备自己写个Parser的~~~~
      

  6.   

    //对于SelectNodes...uses msxml;
    {$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      noderef:IXMLDOMNodeRef;
      root:IXMLDOMNode;
      Node:IXMLDOMNode;
      NodeList:IXMLDOMNodeList;
      i,n:Integer;
    begin
      XMLDocument1.Active:=true;
      noderef:=XMLDocument1.DocumentElement.DOMNode as IXMLDOMNodeRef;
      root:=noderef.GetXMLDOMNode;
    //  node:=root.selectSingleNode('node1/node2/node3/node4');
      NodeList:=root.selectNodes('node1/node2/node3/node4');  if Assigned(nodeList) then
      begin
        n:=NodeList.length;
        for i := 0 to n-1 do
        begin
          Node:=NodeList.item[i];
          ShowMessage(node.attributes.getnameditem('title').text);
        end;
      end;
    end;