声明IXMLNode变量。给段代码给你参考下。
Myxml := TXMLDocument.Create(nil);
Myxml.LoadFromFile(sFilePath);
Myxml.Active := True;
Root := Myxml.DocumentElement;
Next_Node := Root.ChildNodes.First;
while Next_Node <> nil do
begin
if Next_Node.LocalName = 'ParaCode' then
begin
Rec_Nod := Next_Node.ChildNodes.First;
while Rec_Nod <> nil do
begin
if Rec_Nod.LocalName = 'Rec' then
begin
Field_Node := Rec_Nod.ChildNodes.First;
New(p);
while Field_Node <> nil do
begin
if LowerCase(Field_Node.Attributes['code']) = LowerCase('CardID') then
begin
p.CardID := Trim(Field_Node.Text);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('cardType') then
begin
p.icklx := StrToInt(Field_Node.Text);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('blackType') then
begin
p.blackType := StrToInt(Field_Node.Text);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('occurTime') then
begin
p.occurTime := StrToDateTimeDef(Field_Node.Text, Now);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('ExpireTime') then
begin
p.ExpireTime := StrToDateTimeDef(Field_Node.Text, Now);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('validFlag') then
begin
p.validFlag := StrToIntDef(Field_Node.Text, 0);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('RegisterOrgId') then
begin
p.RegisterOrgId := StrToIntDef(Field_Node.Text, 0);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('registerOperatorId') then
begin
p.registerOperatorId := StrToIntDef(Field_Node.Text, 0);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('spare1') then
begin
p.spare1 := StrToIntDef(Field_Node.Text, 0);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('spare2') then
begin
p.spare2 := Field_Node.Text;
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('res') then
begin
p.res := Field_Node.Text;
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('version') then
begin
p.version := Field_Node.Text;
if p.version>g_ETC_para_ver.blackcard_version then g_ETC_para_ver.blackcard_version:=p.version;
end;
Field_Node := Field_Node.NextSibling;
end;
TmpList.Add(p);
end;
Rec_Nod := Rec_Nod.NextSibling;
end;
end;
Next_Node := Next_Node.NextSibling;
end;
Myxml := TXMLDocument.Create(nil);
Myxml.LoadFromFile(sFilePath);
Myxml.Active := True;
Root := Myxml.DocumentElement;
Next_Node := Root.ChildNodes.First;
while Next_Node <> nil do
begin
if Next_Node.LocalName = 'ParaCode' then
begin
Rec_Nod := Next_Node.ChildNodes.First;
while Rec_Nod <> nil do
begin
if Rec_Nod.LocalName = 'Rec' then
begin
Field_Node := Rec_Nod.ChildNodes.First;
New(p);
while Field_Node <> nil do
begin
if LowerCase(Field_Node.Attributes['code']) = LowerCase('CardID') then
begin
p.CardID := Trim(Field_Node.Text);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('cardType') then
begin
p.icklx := StrToInt(Field_Node.Text);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('blackType') then
begin
p.blackType := StrToInt(Field_Node.Text);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('occurTime') then
begin
p.occurTime := StrToDateTimeDef(Field_Node.Text, Now);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('ExpireTime') then
begin
p.ExpireTime := StrToDateTimeDef(Field_Node.Text, Now);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('validFlag') then
begin
p.validFlag := StrToIntDef(Field_Node.Text, 0);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('RegisterOrgId') then
begin
p.RegisterOrgId := StrToIntDef(Field_Node.Text, 0);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('registerOperatorId') then
begin
p.registerOperatorId := StrToIntDef(Field_Node.Text, 0);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('spare1') then
begin
p.spare1 := StrToIntDef(Field_Node.Text, 0);
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('spare2') then
begin
p.spare2 := Field_Node.Text;
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('res') then
begin
p.res := Field_Node.Text;
end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('version') then
begin
p.version := Field_Node.Text;
if p.version>g_ETC_para_ver.blackcard_version then g_ETC_para_ver.blackcard_version:=p.version;
end;
Field_Node := Field_Node.NextSibling;
end;
TmpList.Add(p);
end;
Rec_Nod := Rec_Nod.NextSibling;
end;
end;
Next_Node := Next_Node.NextSibling;
end;
解决方案 »
- 一个关于字符串ASCII码转换为二进制的程序,看看我哪个地方错了【50分送上】
- 我用QR做标签,但无法从硬盘出读图片,如何处理?
- 请教:如何调用webbrowser显示的网页中的函数??
- StringGrid怎樣移除指定的行?
- 各位帮帮忙
- ★★★CSDN结贴联盟第2次信誉提问!!★★★
- 有什么控件可以把按钮增加颜色设置吗?
- 请问怎样用SQL语句将Sql Server2000中表A的字段ID改为自动增长?
- 谁会在WIN32下的Lazarus安装indy10,教我一下,我不会,谢谢
- 如何制作類似windows的開始功能表?
- 真他妈的气死了,在京东买东西后想认真的发个评论,没想到提示说内容中有屏蔽词,大家看看
- 发个D版的截图源码(支持自动选框和自由拖拽截图)
Myxml: IXMLDocument;
Root: IXMLNode; //指向XML根结点
Next_Node: IXMLNode; //指向数据包ID结点
<Root>
<ParaCode>2004</ParaCode>
<ParaCount>2920</ParaCount>
<Items>
<Rec sn="1">
<Field code="CardID">0000000000007777</Field>
<Field code="cardType">26</Field>
<Field code="blackType">2</Field>
<Field code="occurTime">2012-07-03 10:19:30</Field>
<Field code="ExpireTime">2112-07-03 10:19:30</Field>
<Field code="validFlag">1</Field>
<Field code="RegisterOrgId">1</Field>
<Field code="registerOperatorId">0</Field>
<Field code="spare1">0</Field>
<Field code="spare2">0</Field>
<Field code="res">0</Field>
<Field code="version">20120703103111</Field>
</Rec>
<Rec sn="2">
<Field code="CardID">0001000000000000</Field>
<Field code="cardType">23</Field>
<Field code="blackType">3</Field>
<Field code="occurTime">2011-08-03 17:32:16</Field>
<Field code="ExpireTime">2111-08-03 17:32:16</Field>
<Field code="validFlag">1</Field>
<Field code="RegisterOrgId">1</Field>
<Field code="registerOperatorId">1</Field>
<Field code="spare1">0</Field>
<Field code="spare2">0</Field>
<Field code="res">[入口流水校验]设备在2011-08-03 17:32:16被设为伪卡</Field>
<Field code="version">20110803173216</Field>
</Rec>
<Rec sn="3">
<Field code="CardID">0322002812151155</Field>
<Field code="cardType">22</Field>
<Field code="blackType">3</Field>
<Field code="occurTime">2010-04-14 9:07:30</Field>
<Field code="ExpireTime">2110-04-21</Field>
<Field code="validFlag">1</Field>
<Field code="RegisterOrgId">1</Field>
<Field code="registerOperatorId">1</Field>
<Field code="spare1">0</Field>
<Field code="spare2">0</Field>
<Field code="res">0</Field>
<Field code="version">20100421180000</Field>
</Rec>
<Rec sn="4">
<Field code="CardID">0322003076195443</Field>
<Field code="cardType">22</Field>
<Field code="blackType">3</Field>
<Field code="occurTime">2010-07-30 17:06:00</Field>
<Field code="ExpireTime">2110-07-30 17:06:00</Field>
<Field code="validFlag">1</Field>
<Field code="RegisterOrgId">1</Field>
<Field code="registerOperatorId">1</Field>
<Field code="spare1">0</Field>
<Field code="spare2">0</Field>
<Field code="res">[出口流水校验]设备在2010-07-30 17:06:00被设为伪卡</Field>
<Field code="version">20100730170600</Field>
</Rec>
</Items>
</Root>