我有一个用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解析代码中有一些我需要的标签?
谢谢!
答案 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());
}
}