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>
<!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);
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文件了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述