1,新建工程
2,引用单元nativexml
3,上代码如下
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, NativeXml, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
ANativeXml: TNativeXml;
Nodes_Error, Nodes_Page: TXmlNode;
NodeList_Row: TList;
iRow, iCol, iRowCount, iColCount: integer;
begin
Memo2.Lines.Clear;
ANativeXml := TNativeXml.Create(nil);
NodeList_Row := TList.Create;
ANativeXml.ReadFromString(Memo1.Text);
//找到 Error节点并赋值 给 Nodes_Error
Nodes_Error := ANativeXml.RootNodes.Items[1];
for iRow := 1 to ANativeXml.RootNodeCount - 1 do
begin
Memo2.Lines.Add(ANativeXml.RootNodes.Items[iRow].Name + ‘:‘ + ANativeXml.RootNodes.Items[iRow].Value);
end;
//找到 Page节点并赋值 给 Nodes_Page
Nodes_Page := ANativeXml.RootNodes.Items[2];
Memo2.Lines.Add(Nodes_Page.Name + ‘:‘ + Nodes_Page.Value);
Nodes_Page.FindNodes(‘row‘, NodeList_Row);
//找到返回结果中 rowcount 并取值 赋给 iRowCount
iRowCount := StrToInt(Nodes_Page.AttributeValueByName[‘rowcount‘]);
// iRowCount的值也可写成后面形式 iRowCount := NodeList_Row.Count;
Memo2.Lines.Add(‘这是page中rowcount的值:‘ + IntToStr(iRowCount));
//找到返回结果中 colcount 并取值 赋给 iColCount
iColCount := StrToInt(Nodes_Page.AttributeValueByName[‘colcount‘]);
Memo2.Lines.Add(‘这是page中colcount的值:‘ + IntToStr(iColCount));
//遍历page中row的内容并输出到memo2
//第一种,使用 iRowCount遍历
for iRow := 0 to iRowCount - 1 do
begin
Memo2.Lines.Add(‘第‘ + IntToStr(iRow) + ‘行取值开始‘);
Memo2.Lines.Add(‘以下内容是第‘ + IntToStr(iRow) + ‘行的值‘);
Memo2.Lines.Add(TXmlNode(NodeList_Row[iRow]).Nodes[0].Value);
Memo2.Lines.Add( TXmlNode(NodeList_Row[iRow]).Nodes[1].Value);
Memo2.Lines.Add( TXmlNode(NodeList_Row[iRow]).Nodes[2].Value);
Memo2.Lines.Add( TXmlNode(NodeList_Row[iRow]).Nodes[3].Value);
Memo2.Lines.Add( TXmlNode(NodeList_Row[iRow]).Nodes[4].Value);
Memo2.Lines.Add(TXmlNode(NodeList_Row[iRow]).Nodes[5].Value);
Memo2.Lines.Add( TXmlNode(NodeList_Row[iRow]).Nodes[6].Value);
Memo2.Lines.Add( TXmlNode(NodeList_Row[iRow]).Nodes[7].Value);
Memo2.Lines.Add(TXmlNode(NodeList_Row[iRow]).Nodes[8].Value);
Memo2.Lines.Add( TXmlNode(NodeList_Row[iRow]).Nodes[9].Value);
Memo2.Lines.Add( TXmlNode(NodeList_Row[iRow]).Nodes[10].Value);
Memo2.Lines.Add( TXmlNode(NodeList_Row[iRow]).Nodes[11].Value);
Memo2.Lines.Add(TXmlNode(NodeList_Row[iRow]).Nodes[12].Value);
Memo2.Lines.Add( TXmlNode(NodeList_Row[iRow]).Nodes[13].Value);
Memo2.Lines.Add(TXmlNode(NodeList_Row[iRow]).Nodes[14].Value);
Memo2.Lines.Add(‘第‘ + IntToStr(iRow) + ‘行取值完成‘);
end;
//第二种,使用 iRowCount,iColCount遍历
Memo2.Lines.Add(‘以下内容是循环取值的结果‘);
for iRow := 0 to iRowCount - 1 do
begin
Memo2.Lines.Add(‘第‘ + IntToStr(iRow) + ‘行取值开始‘);
for iCol := 0 to iColCount - 1 do
begin
Memo2.Lines.Add(‘第‘ + IntToStr(iRow) + ‘行,第‘ + IntToStr(iCol) + ‘列开始取值‘);
Memo2.Lines.Add(‘第‘ + IntToStr(iRow) + ‘行,第‘ + IntToStr(iCol) + ‘列:‘ + TXmlNode(NodeList_Row[iRow]).Nodes[iCol].Value);
Memo2.Lines.Add(‘第‘ + IntToStr(iRow) + ‘行,第‘ + IntToStr(iCol) + ‘列取值完成‘);
end;
Memo2.Lines.Add(‘第‘ + IntToStr(iRow) + ‘行取值完成‘);
end;
end;
end.