xml - XML如何在PCDATA之后插入换行符
问题描述
我对 XML 完全陌生;我刚刚开始使用 VB6 为我的文化研究一些东西(!我知道......!),目前没有真正的目标。在我的第一次尝试中,我得到了一个令人惊讶的好结果,但是有一个小问题,它只会影响视觉输出。XML 文件的第一行是标准序言: ?xml version="1.0" encoding="iso-8859-1"?
. 第二行是节点DB
信息,它应该在新行的序言之后,以这种方式:
<?xml version="1.0" encoding="iso-8859-1"?>
<DB>Created on 15/06/2021</DB>
但相反,第二行继续第一行。我试图插入一个带有换行符的文本节点(如本网站所示),但我收到一个错误,翻译过来是:“'不可能使用 PCDATA 类型的节点执行操作”。我的代码是:
Sub MakeDB()
Dim dom As MSXML2.DOMDocument60
Dim root As IXMLDOMElement
Dim node As MSXML2.IXMLDOMNode
Set dom = New MSXML2.DOMDocument60
dom.async = False
dom.preserveWhiteSpace = True
Set node = dom.createProcessingInstruction("xml", "version='1.0' encoding='iso-8859-1'" + vbNewLine)
dom.appendChild node
Set node = Nothing
'the following lines raise the error
Set node = dom.createTextNode(vbNewLine)
dom.appendChild node
Set node = Nothing
' Create the first element.
Set root = dom.createElement("DB")
Set node = dom.createTextNode("Created on " + CStr(Date))
root.appendChild node
Set node = Nothing
dom.appendChild root
...
我意识到这不是一个真正的问题,但我想了解会发生什么。
解决方案
在创建内容时,不要关心 XML 声明和文档元素之间的换行符。
您可以使用 Writer 的序列化选项控制是否有换行符或输出为一大行:
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms764689(v=vs.85)
设置是否缩进输出。当设置为 True 时,此属性会缩进“漂亮打印”的输出以反映文档的嵌套结构。
布尔值。读/写。默认值为假。缩进元素的一般规则是: XML 标头和根元素从零缩进的新行开始;元素内容,包括前导和尾随空格,不会以任何方式更改。
oMXXMLWriter.indent = True
推荐阅读
- machine-learning - 具有非整数特征值的逻辑回归
- rest - 序列化失败的 HTTP 状态码
- vb.net - Mailkit - 使用 SendAsync (vb.net) 没有得到预期的异常
- swift - Firebasedata 没有填充 tableView
- angularjs - Angular 4 项目 ng build --prod 失败
- mysql - Plesk 登录页面将无法加载
- java - Apache Camel:我需要让我的 FTP-Consumer 路由交易吗?
- c# - 从字符串数组创建 sql 查询
- r - 将 x 轴限制为当前周
- powershell - 如果输入错误,PowerShell 会获得相同的读取主机