<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<map>
<point type="">
<p X="10" Y="10">1</p>
<p X="20" Y="20">2</p>
<p X="25" Y="25">3</p>
<p X="28" Y="28">4</p>
</point>
</map>
xml文件如上
如何循环读取每个点的坐标x和y值?
以及如何创建相同格式的xml?
uses msxmldom, XMLDoc, XMLIntf;// 注意节点名 属性名大小写 procedure TForm1.Button1Click(Sender: TObject);var // Xml 容器 XMLDoc: TXMLDocument; IXMLDoc: IXMLDocument; // Xml节点 Root_Node: IXMLNode; Parent_Node: IXMLNode; Child_Node: IXMLNode;begin XMLDoc:= TXMLDocument.Create(nil); IXMLDoc:= XMLDoc; try XMLDoc.LoadFromFile('d:\Test.xml'); XMLDoc.Active:= True; XMLDoc.Encoding:= 'UTF-8'; Root_Node:= XMLDoc.DocumentElement; if Root_Node = nil then Exit; if Root_Node.NodeName <> 'map' then Exit; Parent_Node:= Root_Node.ChildNodes.First; if Parent_Node = nil then Exit; if Parent_Node.NodeName = 'point' then begin Memo1.Lines.Add('point type = "' + Parent_Node.Attributes['type'] + '"'); Child_Node:= Parent_Node.ChildNodes.First; while Child_Node <> nil do begin Memo1.Lines.Add(Child_Node.NodeName + ' ' + VarToStr(Child_Node.NodeValue) + ' x = ' + VarToStr(Child_Node.Attributes['X']) + ' y = ' + VarToStr(Child_Node.Attributes['Y'])); Child_Node:= Child_Node.NextSibling; end; end; finally IXMLDOC:= nil; XMLDoc:= nil; XMLDoc.Free; end;end;
追问
测试有效...能否上个范例,怎么创建这种格式的xml?
回答
procedure TForm1.Button2Click(Sender: TObject);var // Xml 容器 XMLDoc: TXMLDocument; IXMLDoc: IXMLDocument; // Xml节点 Root_Node: IXMLNode; Parent_Node: IXMLNode; Child_Node: IXMLNode;begin XMLDoc:= TXMLDocument.Create(nil); IXMLDoc:= XMLDoc; try XMLDoc.Active:= True; XMLDoc.Encoding:= 'UTF-8'; XMLDoc.StandAlone:= 'yes'; Root_Node:= XMLDoc.AddChild('map'); Parent_Node:= Root_Node.AddChild('point'); Parent_Node.SetAttributeNS('type', '', ''); Child_Node:= Parent_Node.AddChild('p'); Child_Node.SetAttributeNS('X', '', '10'); Child_Node.SetAttributeNS('Y', '', '10'); Child_Node.NodeValue:= '1'; Child_Node:= Parent_Node.AddChild('p'); Child_Node.SetAttributeNS('X', '', '20'); Child_Node.SetAttributeNS('Y', '', '20'); Child_Node.NodeValue:= '2'; Child_Node:= Parent_Node.AddChild('p'); Child_Node.SetAttributeNS('X', '', '25'); Child_Node.SetAttributeNS('Y', '', '25'); Child_Node.NodeValue:= '3'; Child_Node:= Parent_Node.AddChild('p'); Child_Node.SetAttributeNS('X', '', '28'); Child_Node.SetAttributeNS('Y', '', '28'); Child_Node.NodeValue:= '4'; XMLDoc.SaveToFile('d:\Test1.xml'); finally IXMLDOC:= nil; XMLDoc:= nil; XMLDoc.Free; end;end;
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。