我有这样一个xml文件
<?xml version="1.0" encoding="gb2312"?>
<tabledata>
  <index>
    <lines> </lines>
    <num>0</num>
    <Ename>甲</Ename>
    <code>乙</code>
    <Cunit>丙</Cunit>
      <datas>
        <data>1</data>
        <data>2</data>
      </datas>
      <datas>
        <data>3</data>
        <data>4</data>
      </datas>
  </index>
 <item>
      <lines>0</lines>
      <num>1</num>
      <Ename>yuanshun</Ename>
      <code>001</code>
      <Cunit> </Cunit>
   <datas>
     <data type="1" id="001_1,1234">2</data>
     <data type="1" id="001_2,1234">4</data>
     <data type="1" id="001_3,1234">5</data>
     <data type="1" id="001_4,1234">6</data>
   </datas>
 </item>
  <re>
    <user>1</user>
  </re>
</tabledata>
我通过xmldoc读取其中每一个元素
var
  mXmlDoc: TXMLDocument;
  Root: IXMLNode;
  iCount: integer;
begin
  mXmlDoc := TXMLDocument.Create(nil);
  mXmlDoc.LoadFromFile('temp.xml');
  Root := mXmlDoc.DocumentElement;  mXmlDoc.Free;
end;
在Root := mXmlDoc.DocumentElement总是报错,这是怎么回事,如果读取这个xml文件的每一个元素最好是举个例子
谢谢

解决方案 »

  1.   

    给TXMLDocument附一个Owner就可以了var
      mXmlDoc: TXMLDocument;
      Root: IXMLNode;
      iCount: integer;
    begin
      mXmlDoc := TXMLDocument.Create(self);
      mXmlDoc.LoadFromFile('temp.xml');
      Root := mXmlDoc.DocumentElement;  mXmlDoc.Free;
    end;
      

  2.   

    我这是一个后台程序没有窗体,需要创建TXMLDocument
      

  3.   

    把 mXmlDoc: TXMLDocument;定义成 mXmlDoc: IXMLDocument;
      

  4.   

    这个也行的:function NewXMLDocument(Version: DOMString = '1.0'): IXMLDocument;
      

  5.   

    var
      xmlDoc:IXMLDOMDocument;
      xmlRoot,xmlNode:IXMLDOMNode;
      xmlAttr:IXMLDOMAttribute;
    begin
      xmlDoc:=CreateOleObject('MSXML.DOMDocument') as IXMLDOMDocument;
      xmlDoc.appendChild(xmlDoc.createProcessingInstruction('xml','version="1.0" encoding="utf-8"'));
      xmlRoot:=xmlDoc.createElement('Scientist_Project');
      xmlDoc.appendChild(xmlRoot);
      xmlAttr:=xmlDoc.createAttribute('version');
      xmlAttr.nodeValue :='1.0';
      xmlRoot.attributes.setNamedItem(xmlAttr);
      

  6.   

    给TXMLDocument附一个Owner就可以了application也可以var
      mXmlDoc: TXMLDocument;
      Root: IXMLNode;
      iCount: integer;
    begin
      mXmlDoc := TXMLDocument.Create(application);
      mXmlDoc.LoadFromFile('temp.xml');
      Root := mXmlDoc.DocumentElement;  mXmlDoc.Free;
    end;