Inno Setup:保存带有缩进的XML文档

ZeevT

我正在尝试在Inno Setup中将新节点添加到XML文件。该节点已正确添加,但下一个标记之前的换行符已删除,或者未添加任何换行符。这是我添加的节点代码:

NewNode := XMLDoc.createElement('Test');
XMLDoc.setProperty('SelectionLanguage', 'XPath');
RootNode := XMLDoc.selectSingleNode('//Configuration/AppSettings');
RootNode.appendChild (NewNode);
RootNode.lastChild.text :='New Node';

这是我的XML文件:

<Configuration>
    <AppSettings Name="General Settings">
        <StartTime/>
        <StopTime/>
        <TimeBetweenTests>30</TimeBetweenTests>
        <Port>600</Port>
        <Test>New Node</Test></AppSettings>
</Configuration>

我期待标签

</AppSettings>

保持在新行中,就像添加新节点之前一样。如何添加换行符以保持格式的可读性?

马丁·普里克里(Martin Prikryl)

您可以使用MXXMLWriterclass进行格式化:

procedure SaveXmlDocumentWithIndent(XmlDocument: Variant; FileName: string);
var
  Writer: Variant;
  Reader: Variant;
  FSO: Variant;
  TextStream: Variant;
begin
  Writer := CreateOleObject('Msxml2.MXXMLWriter');
  Reader := CreateOleObject('MSXML2.SAXXMLReader');
  FSO := CreateOleObject('Scripting.FileSystemObject');
  TextStream := FSO.CreateTextFile(FileName, True);
  Writer.Indent := True;
  Writer.OmitXMLDeclaration := True;
  Reader.ContentHandler := Writer;
  Reader.Parse(XmlDocument);
  TextStream.Write(Writer.Output);
  TextStream.Close();
end;

鸣谢:@cheeso对如何使用缩进保存MSXML2.DomDocument的答案(我认为它使用MXXMLWriter)
我刚刚在Pascal Script中重新实现了他的JavaScript代码。


上面的解决方案将根据MXXMLWriter的喜好重新格式化完整的XML文档

如果要保留自己选择的某种格式,则必须通过添加所需的缩进来显式地实现它。

#13#10在添加的节点之后添加新行(= CRLF)并用制表符(#9缩进结束的父标记,请使用:

RootNode.appendChild(XMLDoc.createTextNode(#13#10#9));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Inno Setup保存带有BOM文件的UTF-16

来自分类Dev

Inno Setup语法-OR,AND

来自分类Dev

Inno Setup中的TTreeView

来自分类Dev

使用带有Signonce标志的Inno Setup签名文件

来自分类Dev

带有参数和屏幕截图的Inno Setup页面列表

来自分类Dev

Inno Setup无法处理带有空格的源路径

来自分类Dev

从Inno Setup执行带有输出重定向的程序

来自分类Dev

使用带有Signonce标志的Inno Setup签名文件

来自分类Dev

在Inno Setup中从XML导入计划的任务

来自分类Dev

在Inno Setup中删除XML元素的内容

来自分类Dev

inno setup中的“ Not in a loop”错误

来自分类Dev

未捕获Inno Setup异常

来自分类Dev

如何从Inno Setup安装JRE?

来自分类Dev

Inno Setup ComponentsList OnClick事件

来自分类Dev

Inno Setup设置TInputQueryWizardPage高度

来自分类Dev

Inno Setup从CDATA创建TStringList

来自分类Dev

Inno Setup:选择组件的功能

来自分类Dev

Inno Setup隐藏日志条目

来自分类Dev

Inno Setup Abs(Integer)功能

来自分类Dev

Inno Setup更改CreateOutputMsgMemoPage字体

来自分类Dev

在Inno Setup中取消安装

来自分类Dev

Inno Setup中的条件DisableProgramGroupPage

来自分类Dev

缺少Inno-Setup分号

来自分类Dev

在Inno Setup中记录TWindowsVersion

来自分类Dev

Inno Setup更改c:\权限

来自分类Dev

Inno Setup:创建简化的ComponentsList

来自分类Dev

Inno Setup,检测Java版本

来自分类Dev

Inno Setup-后处理

来自分类Dev

Inno Setup 中的动态密码