XML的结构如下:
<class>
<TypeID>01002 </TypeID>
<Categories type="123" info="Class" degree="1"/>
<Categories type="456" info="SubClass" degree="2"/>
<Categories type="789" info="DetailClass" degree="3"/>
<Description> <![CDATA[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]]> </Description>
<Serverity>0.0 </BugServerity>
<Feedback/>
<Advice/>
</class>
开发环境是delphi7,请问如何用一个定义一个TStringlist类型或者其他数组函数获取XML中class下的各元素的值????又如何调用呢?急急急啊!!!
<class>
<TypeID>01002 </TypeID>
<Categories type="123" info="Class" degree="1"/>
<Categories type="456" info="SubClass" degree="2"/>
<Categories type="789" info="DetailClass" degree="3"/>
<Description> <![CDATA[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]]> </Description>
<Serverity>0.0 </BugServerity>
<Feedback/>
<Advice/>
</class>
开发环境是delphi7,请问如何用一个定义一个TStringlist类型或者其他数组函数获取XML中class下的各元素的值????又如何调用呢?急急急啊!!!
解决方案 »
- 为什么一下子弹出两个界面
- 双人象棋对战程序源代码下载
- 大家都来吧,问个问题,也算是散分了。
- 【招个老师指定一下 hehe^^ 关于 HTTP协议或NMHTTP之类的使用方法】--- 一经录用,分大大地
- delphi里象asp的split的分割函数是什么?急!!!!!!!!!
- 极简单的问题!
- 100分求crystal report 8.5的安装密码/CD_KEY
- QuickReport如何在自定义针式打印机上连续打印?
- 32位图怎么转为24位
- 使用Delphi操纵Excel时,如何选中某个区域
- 关于“存储空间不足,无法执行此命令”的错误
- ADOQuery1。ParamByName的问题~!~急急
uses XMLIntf,XMLDoc;.............
procedure TForm1.Button1Click(Sender: TObject);
var
XMLFile:IXMLDocument;
i:integer;
XML_Node,XML_SubNode:IXMLNode;
XMLFilePath:string;
begin
XMLFilePath:='C:\test.xml' ;
try
XMLFile:=TXMLDocument.Create(XMLFilePath);
XMLFile.Active:=true;
except
on E:Exception do
begin
application.MessageBox(pchar(e.Message),pchar('ÐÅÏ¢Ìáʾ')) ;
abort;
end;
end; XML_Node:=XMLFile.DocumentElement; for i := 0 to XML_Node.ChildNodes.Count-1 do
begin
XML_SubNode:=XML_Node.ChildNodes.Nodes[i];
memo.Lines.Add('----------------------------');
memo.Lines.Add(XML_SubNode.NodeName);
memo.Lines.Add(vartostr(XML_SubNode.Attributes['type']));
memo.Lines.Add(vartostr(XML_SubNode.Attributes['info']));
memo.Lines.Add(vartostr(XML_SubNode.Attributes['degree']));
if XML_SubNode.IsTextElement and XML_SubNode.HasChildNodes then
memo.Lines.Add(XML_SubNode.Text);
memo.Lines.Add('----------------------------');
end;
end;这个是个测试的
xml里面的内容写到一个memo里面了你给的
<Serverity>0.0 </BugServerity>
不匹配
这样的吧<Serverity>0.0 </Serverity>或<BugServerity>0.0 </BugServerity>
var
XMLFile:IXMLDocument;
i:integer;
XML_Node,XML_SubNode:IXMLNode;
XMLFilePath:string;
begin
XMLFilePath:='C:\test.xml' ;
try
XMLFile:=TXMLDocument.Create(XMLFilePath);
XMLFile.Active:=true;
except
on E:Exception do
begin
application.MessageBox(pchar(e.Message),pchar('ÐÅÏ¢Ìáʾ')) ;
abort;
end;
end; XML_Node:=XMLFile.DocumentElement; for i := 0 to XML_Node.ChildNodes.Count-1 do
begin
XML_SubNode:=XML_Node.ChildNodes.Nodes[i];
memo.Lines.Add('----------------------------');
memo.Lines.Add(XML_SubNode.NodeName);//节点名称
memo.Lines.Add(vartostr(XML_SubNode.Attributes['type']));//对应属性值,没有对应属性就为空
memo.Lines.Add(vartostr(XML_SubNode.Attributes['info']));
memo.Lines.Add(vartostr(XML_SubNode.Attributes['degree']));
if XML_SubNode.IsTextElement and XML_SubNode.HasChildNodes then
memo.Lines.Add(XML_SubNode.Text);//节点内容(为叶节点时且有内容)
memo.Lines.Add('----------------------------');
end;end;你给的<Serverity>0.0 </BugServerity>
应该是这样的<Serverity>0.0 </Serverity>或这样的<BugServerity>0.0 </BugServerity>
xml: TNativexml;
begin
xml.loadfromstream(stream);
for i := 0 to xml.root.count - 1 do
begin
xml.root.nodes[i].readattributeXXX等函数来读取各个属性值
end;
end;
然后一行一行的解析,结合copy,pos,delete函数var
List: TStringList;
tmpIndex: Integer;
tmpLoop: Integer;
begin
List := TStringList.Create;
List.LoadFile('路径名');
for tmpLoop := 0 to tmpIndex do {tmpIndex你的读取的行数,具体根据你的程序而定}
begin
....
end;
end;