Jam*_*est 3 xml delphi parsing
在过去的几天里,我一直在尝试使用Delphi 2010和MSXML,我是一个极端的新手,需要一点方向.
var
MemoryStream: TMemoryStream;
XMLPath: String;
sName: String;
XMLDoc: variant;
doc: TStringList;
begin
//unrelated code
// Create XML File to hard disk
begin
MemoryStream := TMemoryStream.Create;
IdHTTP1.get('http://somewebsite' + , MemoryStream);
MemoryStream.Position := 0;
MemoryStream.SaveToFile('data.xml');
MemoryStream.Free;
end;
// Load XML file for data display
doc:=TStringList.Create;
doc.LoadFromFile('data.xml');
XMLDoc := CreateOleObject('Msxml2.DOMDocument.6.0');
XMLDoc.async := false;
XMLDoc.LoadXML(doc.Text);
Run Code Online (Sandbox Code Playgroud)
如您所见,我能够将数据加载到硬盘上的XML文件中,然后将该文件加载到DomDocument中.我从这一点开始坚持......我想使用这些数据,就像我在ADO中的记录集一样(例如SomeVariable:= rs.Fields.Item('DesiredData').Value).我做了一些研究并阅读了几种方法.但是我无法想出这个.我知道它必须是微不足道的,我还远远不够了解它.
关于如何写入XML文件似乎有很多很好的例子,但没有关于如何使用数据的例子.
我想你可以在接下来的行中做一些事情:
someNode := XMLDoc.selectSingleNode('//route/to/node');
str := someNode.text;
Run Code Online (Sandbox Code Playgroud)
selectSingleNode的参数基本上是一个XPath表达式,因此您可以查询属性节点,如: //route/to/node/@attrib
这是对selectSingleNode的MSDN参考:http://msdn.microsoft.com/en-us/library/ms757846( v = VS.85).aspx ,这里是XPath sintax:http://msdn.microsoft.com /en-us/library/ms256471(v=VS.85).aspx
另外,我可以为您指出一个很好的XML文件,用于Delphi的XML操作,它也与MSXML兼容,但您不必直接使用变体:http://www.omnixml.com/
如果您的XML没有太大变化,那么更好的方法是使用XML数据绑定向导,它基本上从XML或XSD创建一个完整的对象模型(它使得创建或读取XML就像实现复合一样简单对象,创建所需的类和方法):http: //www.youtube.com/watch?v = 4D78MG4CaAI&feature = player_embedded
| 归档时间: |
|
| 查看次数: |
2926 次 |
| 最近记录: |