有一段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;
浙公网安备 33010602011771号