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文件了。 

你可能感兴趣的:(DOCTYPE)