VB6 MSXML2 DOMDocument .xml属性追加NewLine字符

时间:2011-11-23 14:53:19

标签: 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 String
xml = doc.xml

我发现.xml属性存在问题。使用上面的代码时,字符串xml最后有一个NewLine:

enter image description here

如何阻止这种情况发生?

如果它无法停止(即如果它是MSXML或设计中的错误)那么如何在VB 6中删除它? Trim(xml)不起作用

编辑我已经更新了问题,因为.xml属性不是.loadXML方法似乎有问题。如果我选择doc作为元素:

Dim elm As MSXML2.IXMLDOMElement
Set elm = doc.selectSingleNode("doc")
xml = elm.xml

然后.xml属性按预期运行,没有添加NewLine字符,因此它看起来特定于DOMDocument.xml属性。

编辑2:根据SpectralGhost的回答,以下是我最终使用的内容:

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

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

2 个答案:

答案 0 :(得分:2)

这看起来很有效。

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

答案 1 :(得分:0)

XML本身忽略/折叠空格,因此解析器不是问题。如果你真的想摆脱尾随的CRLF,你可以尝试设置doc.preserveWhiteSpace = true