Я кодирую документ для вложения как элемент в кодировке base64 внутри документа XML для передачи.Это достаточно просто, я просто перетаскиваю весь файл в байтовый массив, а затем использую nodeTypedValue MSXML, чтобы base64 кодировал данные, помещая их в элемент.Проблема, однако, заключается в том, что MS XML затем добавляет в элемент свои собственные атрибуты пространства имен и типа данных, что приводит к тому, что вывод xml не проходит проверку.Код, который я использую ниже и вывод.
Как подавить атрибуты "xmlns: dt =" urn: schemas-microsoft-com: datatypes "dt: dt =" bin.base64 "", добавляемые к элементу?
Private Function xmlBinaryDocument(filePath As String) As IXMLDOMElement
Dim xmlDOM As MSXML2.DOMDocument60
Set xmlDOM = New MSXML2.DOMDocument60
Set xmlBinaryDocument = xmlDOM.createNode(NODE_ELEMENT, "document", NS)
Dim strExtension As String
Dim strMimeType As String
Dim fso As FileSystemObject
Set fso = New FileSystemObject
' Info about file
strExtension = fso.GetExtensionName(filePath)
strMimeType = extToMime(strExtension)
' Now read the file as binary data into a byte array
Dim file() As Byte
file = GetFileBytes(filePath)
' Store it in the xml element as a base64 datatype
xmlBinaryDocument.dataType = "bin.base64"
xmlBinaryDocument.nodeTypedValue = file
' attributes
xmlBinaryDocument.setAttribute "document_content_type", strMimeType
xmlBinaryDocument.setAttribute "document_encoding_type", "base64"
xmlBinaryDocument.setAttribute "document_extension", strExtension
End Function
Выход:
<document xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="bin.base64"
document_content_type="application/rtf" document_encoding_type="base64"
document_extension="rtf">***base64 encoded file here***</document>