DELPHI操作XML添加DOCTYPE部分信息

    最近其他项目组遇到一个数据导出XML的小问题,因为我以前对操作XML比较熟悉,自然找到我帮助结局。其实DELPHI操作XML还是很方便的,问题出在他们的XML头部必须有 !DOCTYPE 部分 例如下面的XML代码:

<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE  math SYSTEM "http://www.w3.org/Math/DTD/mathml1/mathml.dtd">
<root>
  
<test>
    
<add key="-1" filename="oFile"/>
  
</test>
</root>

 

    对于在C#中很好操作,DELPHI这部分代码相对较少,在GOOGLE上搜索也没结果,于是我看了一下DELPHI的 NativeXml.pas 源代码,发现其中有 xeDoctype 的定义,这正是我们要找的。哈。。

    定义XML DOCTYPE  的 DELPHI代码如下:

    uses  NativeXml 

procedure TForm1.Button1Click(Sender: TObject);
var
  xml: TNativeXML;
  n_bs: TXMLNode;
begin
  xml :
= TNativeXml.CreateName('root');
  xml.EncodingString :
= 'GB2312';
  xml.XmlFormat :
= xfReadable;

  
//正常XML部分
  n_bs :
= xml.Root.NodeNew('test');
  n_bs :
= n_bs.NodeNew('add');
  n_bs.WriteAttributeString(
'key''-1');
  n_bs.WriteAttributeString(
'filename''oFile');

  
//添加 <!DOCTYPE ?> 部分
  n_bs :
= TXmlNode.CreateType(xml, xeDoctype);
  n_bs.ValueDirect :
= 'math SYSTEM "http://www.w3.org/Math/DTD/mathml1/mathml.dtd"';
  xml.RootNodeList.NodeInsert(
1, n_bs);

  xml.SaveToFile('1.xml');

end; 


这样我们就输出上面的XML文件了。 

posted on 2008-12-04 22:24  relax  阅读(1324)  评论(2编辑  收藏  举报