|

楼主 |
发表于 2008-12-15 22:05:00
|
显示全部楼层
procedure TBJJKGNTCPFS.xmlMsg2DB(xmlData:String);
var
// xmlDoc:TXMLDocument;
xmlDoc:IXMLDOMDocument;
rootNode,curNode:IXMLDOMNode;
i:Integer;
s,sAlarmType,sAlarmId:String;
begin
Borland.Delphi.ActiveX.CoInitialize(nil);
////DataSet
if not dsb_Alarm.DataSet.Active then
begin
dsb_Alarm.DataSet.Active:=true;
dsb_Alarm.DataSet.Open;
end;
dsb_Alarm.DataSet.First;
// xmlDoc:= TXMLDocument.Create(nil);//delphi
xmlDoc:= ComObj.CreateOleObject('Microsoft.XMLDOM') as IXMLDOMDocument;
//xmlDoc.LoadFromXML(xmlData);// delphi
xmlDoc.loadXML(xmlData);
// xmlDoc.Active:=true;
// rootNode:=xmlDoc.DocumentElement; // rootNode
rootNode:=xmlDoc.DocumentElement as IXMLDOMNode;
curNode:=xmlDoc.DocumentElement.getElementsByTagName('alarmitem').item[0];
try
if curNode <> nil then
begin
dsb_Alarm.DataSet.Append; //因故障xml只有一条报警,故只须插入一次
sAlarmId:=dsb_Alarm.DataSet.FieldByName('F_Alarm_ID').AsString;
for i :=0 to curNode.ChildNodes.Get_length -1 do
begin
if curNode.childNodes.Get_baseName='unit_type' then
dsb_Alarm.DataSet.FieldByName('F_Device_Type').AsString:=curNode.ChildNodes.get_text;
if curNode.childNodes.Get_baseName='unit_ID' then
dsb_Alarm.DataSet.FieldByName('F_Device_ID').AsString:=curNode.ChildNodes.get_text;
if curNode.childNodes.Get_baseName='alarm_type' then
begin
dsb_Alarm.DataSet.FieldByName('F_Alarm_Type').AsString:=curNode.ChildNodes.get_text;
sAlarmType:=curNode.ChildNodes.get_text;
end;
if curNode.childNodes.Get_baseName='alarm_value' then
dsb_Alarm.DataSet.FieldByName('F_Alarm_Value').AsString:=curNode.ChildNodes.get_text;
if curNode.childNodes.Get_baseName='alarm_level' then
dsb_Alarm.DataSet.FieldByName('F_Alarm_Level').AsString:=curNode.ChildNodes.get_text;
if curNode.childNodes.Get_baseName='alarm_time' then
dsb_Alarm.DataSet.FieldByName('F_Alarm_Time').AsString:=curNode.ChildNodes.get_text;
if curNode.childNodes.Get_baseName='alarm_location' then
dsb_Alarm.DataSet.FieldByName('F_Alarm_Location').AsString:=curNode.ChildNodes.get_text;
end;
dsb_Alarm.DataSet.ApplyUpdates;
//edtXmlData.Text:=s;
dsb_Alarm.DataSet.Refresh;
DataGrid1.Refresh;
end;
except
on e:exception do
jsDialogs.ShowMsg(e.Message,'Xml-->DataBase Failed!');
end;
//启动流程
// sAlarmId:=dsb_Alarm.DataSet.FieldByName('F_Alarm_ID').AsString;
// sAlarmType:=dsb_Alarm.DataSet.FieldByName('F_Alarm_Type').AsString;
MonitorDevice(sAlarmId,sAlarmType);
end;
if curNode.childNodes.Get_baseName='alarm_description' then
dsb_Alarm.DataSet.FieldByName('F_Alarm_Info').AsString:=curNode.ChildNodes.get_text; |
|