Delphi之中XML的使用

Posted on 2013-01-19 17:53  勒布朗.詹姆斯  阅读(248)  评论(0)    收藏  举报

有一段XML文档:

<?xml version="1.0" encoding="GB2312" ?>
<xml>
<Patient>
<检查标识 fieldtype="1" paramtype="1">12107054279090856</检查标识>
<病人标识 fieldtype="1" paramtype="1">12107047558849352</病人标识>
<病人ID fieldtype="1" paramtype="1">P00037</病人ID>
<病人UID fieldtype="1" paramtype="1">1.2.826.0.1.36800 </病人UID>
<姓名 fieldtype="1" paramtype="1">sdf</姓名>
<姓名拼音 fieldtype="1" paramtype="1">sdf</姓名拼音>
<性别 fieldtype="1" paramtype="1">男</性别>
</Patient>
</xml>

解析出来:

procedure TForm1.Button3Click(Sender: TObject);
var
   XMLDocument: IXMLDocument;
   ChildsList: IXMLNodeList;
   RootNode , Node :IXMLNode;
begin
   XMLDocument := TXMLDocument.Create(nil);
   XMLDocument.XML.Clear;
   XMLDocument.XML.Text := XMLStr ;
   XMLDocument.Active := true;
   RootNode := XMLDocument.DocumentElement;  //解析最顶头的XML节点
   ChildsList := RootNode.ChildNodes;                  //解析最顶头的XML节点
   Node := ChildsList.Nodes['Patient'];                  //XML下的Patient节点
   Node := Node.ChildNodes['检查标识'];               //Patient下的检查标识

   Edit1.text := VarToStr(Node.NodeValue)   //把值赋给edit1

end;

-----也可以写成下面那这个样子

procedure TForm1.Button1Click(Sender: TObject);
var
  XMLStr: string;
  XmlDoc: TNativeXml;
  XmlNode,Node: TXmlNode;
function GetXmlNodeValue(AXmlNode:TXmlNode;ANodeName:string):string;
begin
   Node:=AXmlNode.NodeByName(ANodeName);
   if Node<>nil then
      Result:=Node.ValueAsString
   else
      Result:='';
end;
begin
XMLStr := Trim(Memo1.Text);
XmlDoc := TNativeXml.Create;
try
XmlDoc.ReadFromString(XMLStr);
XmlNode := XmlDoc.Root.NodeByName('Patient');

if XmlNode <> nil then
begin
   Edit1.Text := Trim(GetXmlNodeValue(XmlNode, '检查标识'));
   Edit2.Text := Trim(GetXmlNodeValue(XmlNode, '病人标识'));
   Edit3.Text := Trim(GetXmlNodeValue(XmlNode, '姓名'));
   Edit4.Text := Trim(GetXmlNodeValue(XmlNode, '性别'));
End;

finally
  XmlNode.Free;
  XmlNode := nil;
end;
end;

 

--写XML文档

<?xml version="1.0" encoding="UTF-8"?>

<Root>
<pacsinfo>
<diag note="诊断">Raozhijun</diag>
</pacsinfo>
</Root>

实现方法一。

procedure TForm1.Button2Click(Sender: TObject);
var
   XmlDoc: TNativeXml;
   RootNode0, NootNode1, NewNode: TXmlNode;
begin
   XmlDoc := TNativeXml.CreateName('Root');
   XmlDoc.VersionString := '1.0';
   XmlDoc.EncodingString := 'UTF-8';
   RootNode0 := XmlDoc.Root.NodeNew('pacsinfo');
   NewNode := RootNode0.NodeNew('diag');
   NewNode.WriteAttributeString('note','诊断');
   NewNode.ValueAsString := 'Raozhijun';
   Memo2.Text := XmlDoc.WriteToString;
   FreeAndNil(XmlDoc);
end;

实现方法二。

 

oXMLDocument := TXMLDocument.Create(nil);
oXMLDocument.XML.Clear;
oXMLDocument.Active := True ;
oXMLDocument.Version := '1.0';
oXMLDocument.Encoding := 'UTF-8';
FirstNode := oXMLDocument.AddChild('Root');
ChildNode := FirstNode.AddChild('pacsinfo');
ChildNode := ChildNode.AddChild('diag');
ChildNode.Attributes['note'] := '诊断';
ChildNode.NodeValue := StudySee;
INSPECT_CONTENT := oXMLDocument.XML.Text;
oXMLDocument := nil;

 

 

 

 

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3