在DELPHI里如何读取XML文件?(50分)

  • 主题发起人 主题发起人 lfpsoft
  • 开始时间 开始时间
L

lfpsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<WinampLocaleDefinition language="Chinese(GB)[简体中文]" author="WWW.SEAMANLY.COM">

<translations>
<translation from="Exit Winamp" to="退出 Winamp"/>
<translation from="Scale" to="缩放比例"/>
<translation from="Opacity" to="透明效果(Win2K/XP)"/>
</translations>
</WinampLocaleDefinition>

我看过Winamp3的语言包,它的结构是像上面的一样。
如果在DELPHI里,如何读出"Exit Winamp"的值为"退出 Winamp"呢?
因为我没有接触过XML文件,希望高手解救!
 
最好写个DEMO
lfpsoft@163.com
 
怎么这个问题也没有人答我?
 
靠,前几天才搞定。今天就可以赚分了。例子如下:
-------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
xmldoc: Variant;
TempNode,_doc,_doctemp: Variant;
begin
xmldoc := CreateOleObject('Msxml2.DOMDocument');
xmldoc.async := false;
xmldoc.load('H:/Documents and Settings/Administrator/桌面/DataXML/actlib.XML');
_doc:=xmldoc.selectSingleNode('//rs:data');//定位节点
TempNode:=xmldoc.CreateElement('z:row'); //创建子节点对象
TempNode.setAttribute('id','600');//设置属性
TempNode.setAttribute('xmlns:z','#RowsetSchema');
TempNode.setAttribute('acttype','1');
TempNode.setAttribute('name','招呼');
TempNode.setAttribute('act','//热情地向在场的所有人打招呼。');
ShowMessage(TempNode.GetAttribute('act'));
_doc.appendChild(TempNode); //增加子节点
_doctemp:=xmldoc.selectSingleNode('//z:row[@id=1]');
_doc.removeChild(_doctemp); //删除子节点
ShowMessage(_doc.xml);
end;
------------------------
别忘了在USES中加comobj。

 
用TXMLDocument控件,很好控制XML文件的
 
我需要的一个DEMO,用我给的文件内容做例子。
分不够可以再加!
 
在窗体上放置一个XMLDocument1: TXMLDocument;Button1: TButton;
在button1的onclick事件中写如下代码:
(假定你的文件名字是a.xml,存放在应用程序目录里。注意:UTF-8编码可能不识别汉字,
所以你要把encoding 改为encoding="GB2312"。这一点很重要!!)
var
root:IXMLNode;
i:integer;
begin
XMLDocument1.LoadFromFile('a.xml');
root:=XMLDocument1.DocumentElement ;
if root.ChildNodes.FindNode('translations')<>nil then begin
root:= root.ChildNodes.Nodes['translations'];
for i:=0 to root.ChildNodes.Count -1 do begin
if root.ChildNodes.Nodes.GetAttribute('from') ='Exit Winamp' then
begin
showmessage(root.ChildNodes.Nodes.GetAttribute('to'));
exit;
end;
end;
end;
运行后,出现对话框,里面有"退出 Winamp".
 
试试先,行了就给分!
 
后退
顶部