VB6 MSXML2 DOMDocument.xml属性附加换行符

VB6 MSXML2 DOMDocument.xml属性附加换行符,xml,vb6,msxml,Xml,Vb6,Msxml,我有一个遗留的VB 6应用程序要维护,它使用msxml4.dll 它使用MSXML2.DOMDocument的.loadXML方法从xml字符串创建,然后使用.xml属性输出xml字符串: Dim doc As MSXML2.DOMDocument Set doc = CreateObject("MSXML2.DOMDocument.4.0") Call doc.loadXML("<doc/>") ' ... manipulation of doc ... Dim xml As

我有一个遗留的VB 6应用程序要维护,它使用msxml4.dll

它使用MSXML2.DOMDocument的.loadXML方法从xml字符串创建,然后使用.xml属性输出xml字符串:

Dim doc As MSXML2.DOMDocument
Set doc = CreateObject("MSXML2.DOMDocument.4.0")
Call doc.loadXML("<doc/>")

' ... manipulation of doc ...

Dim xml As String
xml = doc.xml
然后.xml属性按预期运行,没有添加换行符,因此它似乎特定于DOMDocument.xml属性

编辑2:以下是SpectralGhost的答案,以下是我最终使用的:

If Right(xml, Len(vbNewLine)) = vbNewLine Then
    xml = Left(xml, Len(xml) - Len(vbNewLine))
End If

我使用vbNewLine来避免特定于平台的问题。

XML本身会忽略/折叠空白,因此对解析器来说这不是问题。如果您真的想去掉尾随的CRLF,可以尝试设置
doc.preserveWhiteSpace=true

这看起来很有效

IF RIGHT(xml,2)=vbCrLf THEN
   xml=LEFT(xml,LEN(xml)-2)
END IF

preservewitspace=true
无效-crlf仍然存在。AIUI preserveWhiteSpace仅指正在加载的内容中的空白(在本例中,
字符串中没有空白),而不是输出。是的,这是我的选项之一。我最终选择了
xml=Replace(xml,vbNewLine,”)
如果字符串中的其他地方有换行符,我就不会这样做。事实上,当我在代码库的其余部分应用此更改时,我发现了同样的情况-我已经用我最终使用的格式化版本更新了我的Q!
IF RIGHT(xml,2)=vbCrLf THEN
   xml=LEFT(xml,LEN(xml)-2)
END IF