XML单元测试 - 打开XML - 检查它是否有效 - 检查XML中是否存在某些标记

时间:2016-04-06 09:58:41

标签: java xml unit-testing parsing vtd-xml

我有一个用ximpleware(vtd-xml)解析的XML - 就像这样:

     <?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>
.........................

我想写一个junit或者其他东西 - 我找到了一些Hamcrest的Matchers,但是我不知道如何打开我的XML,让我们说如何查看它是否有XmlMatchers.hasXPath("/CdtTrfTxInf/PmtId/EndToEndId"))等等...

我还想测试它是否是有效的XML。 任何人都可以给我一个代码来打开我的XML,测试它是否有效以及它是否在我的java解析代码中有一些我需要的标签?

谢谢!

1 个答案:

答案 0 :(得分:1)

要在vtd-xml中打开文件,您可以执行并检查是否存在标记,您可以这样做:

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());

   }
}