2013-03-22 118 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")