2013-03-22 3 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"는 "루트"의 하위 항목입니다. ASNDetail은 "root \ ASNHeader"의 하위입니다. 나는이 글에서 코드를 적절하게 포맷하지 않는다. 친절하게 조정하십시오.

+0

..하지만 코드 내일 아침에 게시 too..would QTP 근무 (가의 JScript, C 번호에 대해서만 작동 것이라고 생각) .. – user2197743

+0

해결 방법 : 설정 XMLDOM = CreateObject를 ("MSXML2.DOMDocument") xmldom.Load ("C : \ 샘플 \의 test.xml의") '코드 태그 설정 ndClnDtl = xmldom.selectSingleNode을 cpoy하는 ("/ 루트 /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

답변

0

해결책 : 나는에 insertbefore 명령을 통해 솔루션을 가지고

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") 
관련 문제