XML文件如下,我想取得并修改Name="456"的ID的值“2000”,并对“2000”进行修改。
<?xml version="1.0" encoding="utf-8"?>
<aaa>
  <bbb Name="123">
    <ID>1000</ID>
    <Code>1</Code>
  </bbb>
  <bbb Name="456">
    <ID>2000</ID>
    <Code>2</Code>
  </bbb>
  <bbb Name="789">
    <ID>3000</ID>
    <Code>3</Code>
  </bbb>
</aaa>
多谢!

解决方案 »

  1.   

    xml对象操作,变量XML文件找出属性为"465"的节点,然后对子节点操作
    var
      XMLObj: IXMLDocument;
      ANodeList: IXMLNodeList;
      ASubNode: IXMLNode;
      I:  integer;
    begin
      XMLObj := LoadXMLDocument("文件名");
      ANodeList := XMLObj.DocumentElement.ChildNodes;
      for I:= 0 to ANodeList.Count - 1 do
      begin
        //比较节点属性
        if ANodeList[I].GetAttributeNS('Name', '') = '456' then
        begin
          ASubNode:=ANodeList[I].ChildNodes.FindNode('ID');
          ASubNode.text := '要修改的值';
          Break;
        end; 
      end; 
      
    end;
      

  2.   

    XMLObj :=TXMLDocument.Create(nil);
      XMLObj := LoadXMLDocument(xmlfile);
      XMLObj.Active:=true;
      ANodeList := XMLObj.DocumentElement.ChildNodes;报错
    改为ANodeList := XMLObj.ChildNodes;但是取不出值来
      

  3.   

    这里必须用ANodeList := XMLObj.DocumentElement.ChildNodes;
    或者用ANodeList := XMLObj.ChildNodes.FindNode('aaa').ChildNodeS;
    报错估计是你的XML文件语法有问题,查插看吧,
    XMLObj :=TXMLDocument.Create(nil);//这样有问题的
    XMLObj :=TXMLDocument.Create(Application);可以的
    或者用接口,XMLObj: IXMLDocument
    XMLObj:= LoadXMLDocument('文件名');//这样比较好的
      

  4.   

    但是我用XMLObj.SaveToFile(xmlfile);保存后,原先的汉字都乱码了?
      

  5.   

    <?xml version="1.0" encoding="GBK"?>
      

  6.   

    他原先定的是<?xml version="1.0" encoding="utf-8"?>,如果改成encoding="GBK"会不会影响其他人的程序?