2013-07-29 4 views
0

У меня есть шаблон XML-как этоткак добавить дочерний узел в XML в Excel VBA

<?xml version="1.0" encoding="UTF-8"?> 
<manageServiceProfileRequest xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > 
     <subscriptionsList> 
     <**subscription**> 
      <scode>##SCODE##</scode> 
      <sname>##SNAME##</sname> 
      <action>add</action> 
     </subscription> 
     </subscriptionsList> 
</manageServiceProfileRequest> 

Мое требование, чтобы добавить любое количество подписки узлов в зависимости от количества подписок, приведенных в качестве ввод. скажем, если количество подписчиков равно 5, тогда у меня должно быть 5, тогда мой xml shoul имеет 5 подписку узлов в теге subscriptionsList. Я написал код, в котором я вручную создаю узел подписки и добавляю scode, sname и action в качестве дочерних узлов, а затем добавляю к родительскому узлу. Что мне нужно использовать существующий узел подписки в шаблоне образца и добавить его сколько угодно раз.

ответ

0

Не уверен, что я полностью понимаю вопрос, но если ваш документ начинается с одного subscription узлом и вам необходимо добавить дополнительные subscription узлов, то вы можете повторно: глубокий клонировать существующий subscription узел и сделать новый узел дочерним для subscriptionsList узел:

' Note the True parameter to indicate we want to do a deep clone 
Set newNode = existingSubscriptionNode.cloneNode(True) 

' change the values of scode, sname and action here if needed 

existingSubscriptionNode.parentNode.appendChild newNode 

Более подробно в ссылках MSDN для cloneNode и appendChild

+0

Привет Я получаю объект не установлен ошибка со следующим кодом в выделенной строке Private Sub CreateVSID (п As Long) дим XDoc Как MSXML2.DOMDocument.6.0 Тусклое NewNode, MyNewNode As MSXML2.IXMLDOMNode xDoc.LoadXML (Sheet1.Range ("B9"). Value) Набор RootElement = xDoc.DocumentElement для каждого oCountry В RootElement.ChildNodes Если (oCountry.nodeName = "subscriptionsList") Тогда MsgBox oCountry.nodeName ##### NewNode = oCountry.ChildNodes.Item (1) ##### MyNewNode = NewNode.CloneNode (True) Root. appendChild (MyNewNode) –

+0

Решил проблему. Спасибо за информацию :) –

Смежные вопросы