我有如下数据:
<?xml version="1.0" encoding="GB2312" ?>
<Command cmdid="0x8002003" sequence_id="4">
<items termid="11" state="0" position="0" prover="3_0001" />
<items termid="12" state="1" position="0" prover="3_0001"/>
<items termid="13" state="3" position="0" prover="3_0001"/>
</Command>nodes[1]的值是结点Command
请问如何读取 termid="11" 的state 值呢?

解决方案 »

  1.   


    {*
      需要Uses的单有: XMLDoc, XMLIntf  *注*: 我使用的是Delphi2006.
    }
    procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
      XMLString: string;
      XMLDoc: IXMLDocument;
      XMLNode: IXMLNode;
      XMLNodes: IXMLNodeList;
    begin
      XMLString := '<?xml version= "1.0" encoding= "GB2312" ?>';
      XMLString := XMLString + '<Command cmdid="0x8002003" sequence_id="4">';
      XMLString := XMLString + '<items termid="11" state="0" position="0" prover="3_0001"/>';
      XMLString := XMLString + '<items termid="12" state="1" position="0" prover="3_0001"/>';
      XMLString := XMLString + '<items termid="1" state="3" position="0" prover="3_0001"/>';
      XMLString := XMLString + '</Command>';  XMLDoc := NewXmlDocument;
      XMLDoc.LoadFromXML(XMLString);  ShowMessage('cmdid: ' + XMLDoc.DocumentElement.AttributeNodes.FindNode('cmdid').NodeValue);
      ShowMessage('sequence_id: ' + XMLDoc.DocumentElement.AttributeNodes.FindNode('sequence_id').NodeValue);  XMLNodes := XMLDoc.DocumentElement.ChildNodes;
      for I := 0 to XMLNodes.Count - 1 do
      begin
        XMLNode := XMLNodes.Nodes[I];
        ShowMessage('termid: ' + XMLNode.AttributeNodes.FindNode('termid').NodeValue);
        ShowMessage('state: ' + XMLNode.AttributeNodes.FindNode('state').NodeValue);
        ShowMessage('position: ' + XMLNode.AttributeNodes.FindNode('position').NodeValue);
        ShowMessage('prover: ' + XMLNode.AttributeNodes.FindNode('prover').NodeValue);
      end;
    end;