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   relax  阅读(1324)  评论(2编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述

统计

点击右上角即可分享
微信分享提示