В данный момент я создаю XML, как это - и он прекрасно работает ...Каков оптимальный способ создания XML с использованием MSXML
Private Function CreateDom()
Dim dom
Set dom = New DOMDocument
dom.async = False
dom.validateOnParse = False
dom.resolveExternals = False
dom.preserveWhiteSpace = True
Set CreateDom = dom
End Function
Public Function generateXML(sourceFileLocation)
'I make an instance of the dom
Set dom = CreateDom
'This is how I setup a root node
Set rootXML= dom.createElement("root")
dom.appendChild rootXML
'This is how I set attributes
questestinterop.setAttribute "attributeName", "attributeValue"
'setup a child node
Set childOfRoot = dom.createElement("childOfRoot")
rootXML.appendChild childOfRoot
'This is how I set the text of the element
childOfRoot.Text = "Text Value"
End Function
Это нормально в моем простом примере выше, но позволяет сказать, что я имеют большее количество XML для создания - я получаю LOADS из appendchilds и много объектов - эти швы неэффективны и подвержены ошибкам, - но имеет то преимущество, что я могу добавить объект к ранее созданному в любой момент.
С MSXML У меня нет InnerXML для меня, поэтому код является подробным. Я после более эффективного способа создания XML с использованием MSXML и VBA/VB - или лучшей практики для такого рода работ - я не могу не чувствовать, что есть лучший способ.
UPDATE я упоминал выше, не было InnerXml - но есть способ, чтобы загрузить XML-фрагмент в DOM
Sub MergeXML()
'Define
Dim oXml As New MSXML2.DOMDocument
Dim oXml2 As New MSXML2.DOMDocument
'Assign
oXml.loadXML ("<SomeRootElement><Input></Input></SomeRootElement>")
oXml2.loadXML ("<Output><SomeElement></SomeElement></Output>")
'or assign via file
'oXml.Load("c:\Xml.xml")
'oXml2.Load("c:\Xml2.xml")
'Process
oXml.FirstChild.appendChild oXml2.selectSingleNode("//Output")
'Destroy
oXml.Save ("c:\NewXml.xml")
Set oXml2 = Nothing
Set oXml = Nothing
End Sub
Источник: http://p2p.wrox.com/beginning-vb-6/28319-xml-using-msxml2-domdocument-object.html
Это код из VBA, но все равно будет работать в VB.net. Методы MSXML остаются теми же. – Rob
используйте сериализуемые классы, например следующую веб-страницу: http://stackoverflow.com/questions/30274147/update-multi-table-dataset-via-datagridvie w-vb # comment48680953_30274147 – jdweng
Действительно ли 'Set' остается в VB.Сеть? Кроме того, добавьте 'Option Strict On' в начало вашего файла кода или установите его в свойствах вашего проекта. –