VB6 MSXML2 DOMDocument .xml Свойство добавляет символ NewLine - PullRequest
1 голос
/ 23 ноября 2011

У меня есть устаревшее приложение VB 6, которое поддерживает msxml4.dll.

. Он использует метод .loadXML MSXML2.DOMDocument для создания из строк 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, который, по-видимому, виноват.Если я выберу документ в качестве элемента:

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 ]

2 голосов
/ 23 ноября 2011

Похоже, это сработало.

IF RIGHT(xml,2)=vbCrLf THEN
   xml=LEFT(xml,LEN(xml)-2)
END IF
0 голосов
/ 23 ноября 2011

XML сам по себе игнорирует / сворачивает пробелы, поэтому это не проблема для парсера.Если вы действительно хотите избавиться от конечного CRLF, попробуйте установить doc.preserveWhiteSpace = true.

...