delphi中读取xml文件

时间:2022-08-03 12:05:47
delphi如何读取xml中的记录,并导入数据库中。
导入数据库就不用说了,比如
<?xml version="1.0" encoding="UTF-8"?>
<单位基本信息>
    <AAB001>9214</AAB001>
    <AAB002>09214</AAB002>
</单位基本信息>
这样一个简单的xml文件,用msxml如何读取

7 个解决方案

#1


自己顶一下,大家帮帮忙阿,新手

#2


procedure TForm1.Button1Click(Sender: TObject); 
var 
  resultStr:string; 
  XmlNode :IXMLNode; 
  n,s:OleVariant ; 
begin 

//组合xml 

XMLDocument1.XML.Add(' <?xml version="1.0" encoding="gb2312"?> ')  ; 
XMLDocument1.XML.Add(' <ts>')  ; 
XMLDocument1.XML.Add(' <t n="13000272_158" d="2005-5-5 0:0:0" /> ')  ; 
XMLDocument1.XML.Add(' <t n=" 13000272_158" />')  ; 
XMLDocument1.XML.Add(' <t n="13000272_158" b="2005-5-5" e="2005-5-6" i="300" />')  ; 
XMLDocument1.XML.Add(' </ts> ')  ; 

// 
resultStr := GetValue_xml(XMLDocument1.XML.Text) ; 

//XMLDocument2  去获取返回的XML 
XMLDocument2.XML.Add(resultStr) ; 

//循环读取节点 
XmlNode :=  XMLDocument1.DocumentElement.ChildNodes.First ; 
while XmlNode <> nil do 
begin 
  if XmlNode.NodeName = 't' then 
    begin 
      n:= XmlNode.Attributes['n'] ; 
      s:= XmlNode.Attributes['s'] ; 

    end 
  else if XmlNode.NodeName = 'v' then 
    begin 
      n:= XmlNode.Attributes['n'] ; 
      s:= XmlNode.Attributes['s'] ; 

    end; 


      XmlNode := XmlNode.NextSibling ; 
end; 

end;

#3


procedure TForm1.btn1Click(Sender: TObject);
var
  i: Integer;
  Root, Node: IXMLNode;
begin
  XMLDoc.LoadFromFile('D:\TEST.XML');
  XMLDoc.Active:=True;
  Root := XMLDoc.DocumentElement;
  for i:=0 to Root.ChildNodes.Count-1 do
  begin
    Node := Root.ChildNodes.Nodes[i];
    Memo1.Lines.Add(Node.NodeName+'='+Node.NodeValue);
  end;
end;

#4


楼上的都说了,接分

#5


看3楼的

#6


引用 3 楼 3150379 的回复:
Delphi(Pascal) codeprocedure TForm1.btn1Click(Sender: TObject);
var
  i: Integer;
  Root, Node: IXMLNode;
begin
  XMLDoc.LoadFromFile('D:\TEST.XML');
  XMLDoc.Active:=True;
  Root := XMLDoc.DocumentElement;
  for i:=0 to Root.ChildNodes.Count-1 do
  begin
    Node := Root.ChildNodes.Nodes[i];
    Memo1.Lines.Add(Node.NodeName+'='+Node.NodeValue);
  end;
end;

up

#7


用XMLDOCUMENT.

#1


自己顶一下,大家帮帮忙阿,新手

#2


procedure TForm1.Button1Click(Sender: TObject); 
var 
  resultStr:string; 
  XmlNode :IXMLNode; 
  n,s:OleVariant ; 
begin 

//组合xml 

XMLDocument1.XML.Add(' <?xml version="1.0" encoding="gb2312"?> ')  ; 
XMLDocument1.XML.Add(' <ts>')  ; 
XMLDocument1.XML.Add(' <t n="13000272_158" d="2005-5-5 0:0:0" /> ')  ; 
XMLDocument1.XML.Add(' <t n=" 13000272_158" />')  ; 
XMLDocument1.XML.Add(' <t n="13000272_158" b="2005-5-5" e="2005-5-6" i="300" />')  ; 
XMLDocument1.XML.Add(' </ts> ')  ; 

// 
resultStr := GetValue_xml(XMLDocument1.XML.Text) ; 

//XMLDocument2  去获取返回的XML 
XMLDocument2.XML.Add(resultStr) ; 

//循环读取节点 
XmlNode :=  XMLDocument1.DocumentElement.ChildNodes.First ; 
while XmlNode <> nil do 
begin 
  if XmlNode.NodeName = 't' then 
    begin 
      n:= XmlNode.Attributes['n'] ; 
      s:= XmlNode.Attributes['s'] ; 

    end 
  else if XmlNode.NodeName = 'v' then 
    begin 
      n:= XmlNode.Attributes['n'] ; 
      s:= XmlNode.Attributes['s'] ; 

    end; 


      XmlNode := XmlNode.NextSibling ; 
end; 

end;

#3


procedure TForm1.btn1Click(Sender: TObject);
var
  i: Integer;
  Root, Node: IXMLNode;
begin
  XMLDoc.LoadFromFile('D:\TEST.XML');
  XMLDoc.Active:=True;
  Root := XMLDoc.DocumentElement;
  for i:=0 to Root.ChildNodes.Count-1 do
  begin
    Node := Root.ChildNodes.Nodes[i];
    Memo1.Lines.Add(Node.NodeName+'='+Node.NodeValue);
  end;
end;

#4


楼上的都说了,接分

#5


看3楼的

#6


引用 3 楼 3150379 的回复:
Delphi(Pascal) codeprocedure TForm1.btn1Click(Sender: TObject);
var
  i: Integer;
  Root, Node: IXMLNode;
begin
  XMLDoc.LoadFromFile('D:\TEST.XML');
  XMLDoc.Active:=True;
  Root := XMLDoc.DocumentElement;
  for i:=0 to Root.ChildNodes.Count-1 do
  begin
    Node := Root.ChildNodes.Nodes[i];
    Memo1.Lines.Add(Node.NodeName+'='+Node.NodeValue);
  end;
end;

up

#7


用XMLDOCUMENT.