例如people.xml文件:
<People>
<Name>Tom</Name>
<Old>20</Old>
<Address>xxx</Adress>
</People>现在有类TPeople,创建TPeople的一个对象来存储xml的内容,如果用DOM解释这个XML的话就很方便:
var
xmlDoc: IXMLDOMDocument;
xmlNode: IXMLDOMNode;
p: TPeople;
begin
xmlDoc:= CoDOMDocument.Create;
xmlDoc.Load('people.xml');
p := TPeople.Create;
p.Name := xmlDoc.selectSingleNode('Name').text;
p.Old := xmlDoc.selectSingleNode(Old).text;
p.Address:= xmlDoc.selectSingleNode(Address).text;
end;如果用SAX解释的话,因为SAX每读到一个节点就会抛出一个事件,在事件处理函数里只能取到这个节点的内容,其他节点就的内容就不知道,所以不知在什么时候创建TPeople的对象p,不知如何存储p.Name、p.Old、p.Address的内容。大家知道的能说说不?
<People>
<Name>Tom</Name>
<Old>20</Old>
<Address>xxx</Adress>
</People>现在有类TPeople,创建TPeople的一个对象来存储xml的内容,如果用DOM解释这个XML的话就很方便:
var
xmlDoc: IXMLDOMDocument;
xmlNode: IXMLDOMNode;
p: TPeople;
begin
xmlDoc:= CoDOMDocument.Create;
xmlDoc.Load('people.xml');
p := TPeople.Create;
p.Name := xmlDoc.selectSingleNode('Name').text;
p.Old := xmlDoc.selectSingleNode(Old).text;
p.Address:= xmlDoc.selectSingleNode(Address).text;
end;如果用SAX解释的话,因为SAX每读到一个节点就会抛出一个事件,在事件处理函数里只能取到这个节点的内容,其他节点就的内容就不知道,所以不知在什么时候创建TPeople的对象p,不知如何存储p.Name、p.Old、p.Address的内容。大家知道的能说说不?
解决方案 »
- sendmessage用不了
- fastreport直接打印出错 请教高手 提示 fastreport undeclared identifier ‘frall’
- 散分。。。。大家觉得做一款什么软件能让你更方便快捷的使用电脑
- delphi日期计算,要月份
- 双击SYSTRYAICON图标显示主窗口后,窗口并不是激活的,怎么办?
- 关于截屏的问题
- 如果和将查询出的数据依照固定格式转换成CSV文件或TXT文件
- 请教ado的connetion问题?
- 标识种子怎么写到数据库?
- delphi和excel以及access的连接,急!
- sql存储过程返回值与RAISE
- 用FORMAT格式化SQL语句时,布尔形变量用什么表示?如字符型可以使用%s,整形可以使用%d,布尔形用什么呀?
如果你的xml文件不复杂,可以试试这样做。在startElement里面遇到people标签的时候创建 TPeople对象,并将对象入栈,在解析到后面的Name的时候,取出栈顶元素,并赋值。
在endElement里面,遇到popele标签的时候将TPeople对象出栈