如何用Delphi的TXMLDocument控制件来修改、删除、添加XML文件中的值? 
我的XML文件结构如下:
<?xml version="1.0" encoding="GB2312" ?> 
<ROWDATA>
  <ROW>
    <NAME>模版一</NAME> 
    <SQL1>
      select * from table_1 where dwdm = ? group by dwdm 1    
    </SQL1> 
    <SQL2>
      select * from table_1 where dwdm = ?
    </SQL2> 
  </ROW>
  <ROW>
    <NAME>模版二</NAME> 
    <SQL1>
      select * from table_2 
      where dwdm = ? group by dwdm 2    
    </SQL1> 
    <SQL2>
      select * from table_2 where dwdm = ?
    </SQL2> 
  </ROW>
  <ROW>
    <NAME>模版三</NAME> 
    <SQL1>
      select * from table_3 where dwdm = ? group by dwdm 3    
    </SQL1> 
    <SQL2>
      select * from table_3 where dwdm = ?
    </SQL2> 
  </ROW> 
</ROWDATA>
我现在有如下几个问题:
<用"NAME"来定位>
1、如何修改NAME=“模版三”的SQL2的值?
2、如何删除NAME=“模版三”的所有值(包括"NAME","SQL1","SQL2"三个字段值)?
3、如何往该XML文件中,添加一个新的“模版四”的值
即在模版三后面添加:
    NAME=“模版四”
    SQL1=“select * from table_4 where dwdm = ? group by dwdm 4”
    SQL2=“select * from table_4 where dwdm = ?”(希望大家不要把那个读取学生信息的XMl例子的代码帖过来。)谢谢啦!分不够再开帖。

解决方案 »

  1.   


       Delphi版的没有,VB.NET倒是有一个.
      

  2.   

    我要的是 Delphi的TXMLDocument控件来实现
      

  3.   

    看看这个
    http://www.csdn.com.cn/program/849.htm
    http://lysoft.7u7.net
      

  4.   

    //修改NAME=“模版三”的SQL2的值
    VAR
    Root : IXMLNode; //指向XML根结点
    Parent_Node: IXMLNode; //指向ROWDATA结点
    Child_node : IXMLNode; //指向ROW的子结点
    Begin
    XMLDocument1.Active:=True;
    XMLDocument1.Option:=XMLDocument1.Option+[doAutoSave];
    Root := XMLDocument1.DocumentElement;
    Parent_Node:=Root.ChildNodes[2];
    Child_node :=Parent_Node.ChildNodes[2];
    Child_node.text:=''; //输入你想修改后的内容;
    End;//删除NAME=“模版三”的所有值(包括"NAME","SQL1","SQL2"三个字段值)
    VAR
    Root : IXMLNode; //指向XML根结点
    Child_node1: IXMLNode; //指向ROWDATA结点
    Child_node2 : IXMLNode; //指向ROW的子结点
    Child_node3 : IXMLNode; //指向ROW的子结点
    Begin
    XMLDocument1.Active:=True;
    XMLDocument1.Option:=XMLDocument1.Option+[doAutoSave];
    Child_node1 :=XMLDocument1.DocumentElement.ChildNodes[2].ChildNodes[0];
    Child_node1.text:='' //取空就算删除吧
    Child_node2 :=XMLDocument1.DocumentElement.ChildNodes[2].ChildNodes[1];
    Child_node2.text:='' //取空就算删除吧
    Child_node3 :=XMLDocument1.DocumentElement.ChildNodes[2].ChildNodes[2];
    Child_node3.text:='' //取空就算删除吧
    End;//往该XML文件中,添加一个新的“模版四”的值
    var
      NewStock: IXMLNode;
      ValueNode: IXMLNode;
    begin
     NewStock := XMLDocument1.DocumentElement.AddChild('ROW');
      ValueNode := NewStock.AddChild('name');
      ValueNode.Text := '模版四';
      ValueNode := NewStock.AddChild('SQL1');
      ValueNode.Text := 'select * from table_4 where dwdm = ? group by dwdm 4';
      ValueNode := NewStock.AddChild('SQL2');
      ValueNode.Text := 'select * from table_4 where dwdm = ?';
    end;