2013-03-22 75 views
0

我需要在特定位置添加節點。請檢查下面的例子。需要在QTP中的XML中的特定位置添加節點

<root> 
<ASNHeader> 
<ASNStart>text</ASNStart> 
<ASNprop>text_prop</ASNprop> 
<ASNDetail> 
<ASNAprvr>Mr.X</ASNAprvr> 
<ASNAprvrDt>20Mar</ASNAprvrDT> 
<ASNAprvrSub>XXX</ASNAprvrsUB> 
</ASNDetail> 
<ASNSHIP>XYZ</ASNSHIP> 
<ASNSRDC>XYZ123</ASNSRDC> 
</ASNHeader> 
</root> 

在這裏,我必須複製「ASNDetail」標籤和現有的「ASNDetail」之後和之前的「ASNSHIP」的標籤粘貼。我需要根據用戶指定的次數複製粘貼。 注意:我必須在QTP中執行此操作,並且使用MSXML2.DomDocument作爲xml解析器。任何人都可以提出一個方法AppendChild在「ASNSRDC」標籤後複製它,但我不想這樣。 這裏「ASNHeader」是「root」的孩子。 ASNDetail是「root \ ASNHeader」的子項。我沒有在這篇文章中正確地格式化代碼。善意調整。

+0

我有過的insertBefore命令溶液(認爲它只會工作對於JScript,C#)..但其QTP使用的代碼明天早上too..would後.. – user2197743 2013-03-22 05:09:37

+0

解決方案: 集XMLDOM =的CreateObject( 「MSXML2.DOMDocument」) xmldom.Load( 「C:\ SAMPLE \的test.xml」) 「代碼以cpoy標籤 集ndClnDtl = xmldom.selectSingleNode(「/根/ASNHeader/ASNDetail").cloneNode(true) '您需要的位置到警察XML標記 集specNode上= xmldom.selectSingleNode( 「/根/ ASNHeader/ASNSHIP」) 「Rtnode是父的位置提到 集Rtnode = xmldom.selectSingleNode( 「/根/ ASNHeader」) Rtnode。 insertBefore ndClnDtl,specNode xmldom.Save(「C:\ Sample \ test.xml」) – user2197743 2013-03-22 14:37:56

回答

0

解決方案:

Set xmldom = CreateObject("MSXML2.DOMDocument") 
xmldom.Load(C:\Sample\test.xml") 

'Code to cpoy the tag 
Set ndClnDtl = xmldom.selectSingleNode("/root/ASNHeader/ASNDetail").cloneNode(true) 

'Location at which you need to cop the xml tags 
Set specNode = xmldom.selectSingleNode("/root/ASNHeader/ASNSHIP") 

'Rtnode is parent to the location mentioned 
Set Rtnode = xmldom.selectSingleNode("/root/ASNHeader") 
Rtnode.insertBefore ndClnDtl,specNode 

xmldom.Save("C:\Sample\test.xml")