XML 单元测试 - 打开 XML - 检查它是否有效 - 检查一些标签是否存在于 XML

XML unit testing - open XML - check if it's valid - check some tags if they exists in the XML

我有一个 XML,我用 ximpleware (vtd-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 解析代码中需要的一些标签?

谢谢!

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

   }
}