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());
}
}
我有一个 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());
}
}