2013-11-06 8 views
1

Я пытаюсь понять MSXML и его использование. У меня есть проект, где мне нужно прочитать узел и все его содержимое из XML-файла, а затем скопировать этот узел в другие XML-файлы. Я застрял в добавлении дочернего узла. Я думаю, что делаю все правильно, но я продолжаю получать ошибку «Объект не поддерживает это свойство или метод».Добавить узел к узлу в XML

Он висит на «xNode2.appendChild (XElement)»

Я прикреплял процедуру я работаю.

Если кто-то может дать мне какое-то направление, было бы очень признательно.

Dim xDoc As DOMDocument60, xDoc2 As DOMDocument60, xNode As IXMLDOMElement, _ 
    xmlStr As String, xSub As IXMLDOMNode, xNode2 As IXMLDOMElement 

Set xDoc = New DOMDocument60 

'Attempt to load the backup file for the selected printer. 
If xDoc.Load("C:\Program Files\ID Technology\CiControl\Backup Files\" & _ 
       main.printerView.SelectedItem.Key & "\" & _ 
       Format(Date, "mm.dd.yy") & ".xml") Then 

    'Find the message xml in the backup file. 
    Set xNode = xDoc.selectSingleNode("//Messages/Message[Name='" & msgView.SelectedItem & "']") 

    'Begin extracting all of the message xml. 
    For Each xSub In xNode.childNodes    
     Debug.Print xSub.xml 
     'Build the xml string. 
     xmlStr = xmlStr & xSub.xml 
    Next 

    Set xDoc2 = New DOMDocument60 

    xDoc2.Load ("C:\Program Files\ID Technology\CiControl\Backup Files\127.0.0.1\" _ 
       & Format(Date, "mm.dd.yy") & ".xml") 

    'Set xNode2 = xDoc2.createElement("Message") 
    Set xNode2 = xDoc2.selectSingleNode("//Messages") 

    Dim xElement As IXMLDOMElement 

    Set xElement = xDoc2.createElement("Message") 

    xElement.Text = xmlStr 

    xNode2.appendChild (xElement) 
    'xDoc2.documentElement.appendChild (xNode2) 

    xDoc2.save ("C:\Program Files\ID Technology\CiControl\Backup Files\127.0.0.1\" & _ 
       Format(Date, "mm.dd.yy") & ".xml") 

End If 

Set xDoc = Nothing 
Set xNode = Nothing 
Set xSub = Nothing 
Set xDoc2 = Nothing 
Set xNode2 = Nothing 
+0

Добро пожаловать в SO! Можете ли вы указать точную строку кода, которая получает ошибку? – Derek

+0

Я получаю сообщение об ошибке: xNode2.appendChild (xElement) Где я иду не так. – user2962310

+0

@ user2962310 У вас есть какое-либо решение проблемы? У меня почти такая же проблема. –

ответ

0

Вы должны import узел из исходного DOM в новый DOM, прежде чем вы можете добавить узел в новый DOM.

Dim CloneNode As IXMLDOMNode 
Set CloneNode = xDoc2.ImportNode(xElement) 
xNode2.appendChild (CloneNode) 
Смежные вопросы