2016-04-06 14 views
1

Ben bir I ximpleware (VTD-xml) ile ayrıştırmak XML sahip - böyle bir şey:XML birim testleri - açık XML - bu geçerli olmadığını kontrol - onlar XML varsa bazı etiketleri kontrol

 <?xml version="1.0"?> 
     <S2SCTScf:SCTScfBlkCredTrf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:S2SCTScf="urn:S2SCTScf:xsd:$SCTScfBlkCredTrf" xsi:schemaLocation="urn:S2SCTScf:xsd:$SCTScfBlkCredTrf file:///T:/CommonData%201/CBS/CBS%20Payments%20Team/Testing/XSD/SCT/SCTScfBlkCredTrf.xsd"> 
    ................................   
       <CdtTrfTxInf> 
        <PmtId> 
         <EndToEndId>171766 12856615</EndToEndId> 
         <TxId>6022064LAS99</TxId> 
        </PmtId> 
        <PmtTpInf> 
         <SvcLvl> 
          <Cd>SSSS</Cd> 
         </SvcLvl> 
        </PmtTpInf> 
......................... 

ve ben bir JUnit veya bir şeyler yazmak istiyorum - Ben hamcrest falan bazı matchers bulundu ama benim XML açmak için biliyorum ve en çok üzerinde XmlMatchers.hasXPath("/CdtTrfTxInf/PmtId/EndToEndId")) vardır ve aşağıdaki şekilde görebilirsiniz diyelim yok ...

Ayrıca geçerli bir XML olup olmadığını test etmek istiyorum. Kimse benim XML'imi açmak için bir kod verebilir, geçerli olup olmadığını ve java ayrıştırma kodumda gereken bazı etiketler varsa test edebilir mi?

Teşekkürler!

+0

burada http://stackoverflow.com/questions/ cevabınızı bulabilirsiniz 51771/en-iyi-yol-validate-xml-in-a-birim-testi? Rq = 1 – udaybhaskar

+0

"Eksi" için teşekkür ederim ama ben orada oldum ve ben onu açma yolunu bulamadım XML veya XML'imde bir etiketim olup olmadığını kontrol etme. – WDrgn

+1

http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/ bu kesinlikle xml dosyanızı okumak için sizi cehennem edecektir – udaybhaskar

cevap

1

yapmanız ve bir etiket bulunup bulunmadığını kontrol edebilirsiniz VTD-xml dosyasını açmak için, bunu yapabilirsiniz:

import com.ximpleware.*; 
public class openAndTest{ 
    public static void main(String[] s) throws VTDException{ 
     // open the XML file 
     VTDGen vg = new VTDGen(); 
     if (!vg.parseFile("input.xml", false)) // namespace disabled here 
      return; 
     VTDNav vn = vg.getNav(); 
     AutoPilot ap = new AutoPilot(vn); //bind to vn object 
     ap.selectXPath("/CdtTrfTxInf/PmtId/EndToEndId"); // dont put xpath compilation in loop 
     System.out.println(" test result is "+ap.evalXPathToBoolean()); 
     ap.selectXPath("/CdtTrfTxInf/PmtId/EndToEndId"); // reuse AP, but you can instantiate a separate AutoPilot object. 
     System.out.println(" test result is "+ap.evalXPathToBoolean()); 

    } 
}