< spxx>
< spxx>
代码如下
< spxx>
《sp key="MXXH" value="明细序号"/》
《sp key="SPMC" value="商品名称" /》
< spxx>
将以上用xsd进行校验,跪求大神指导
这样写: spxx 作为一个实体类:
<xsd:complexType name="spxx">
<xsd:attribute name="MXXH" type="xsd:string"></xsd:attribute>
<xsd:attribute name="SPMC" type="xsd:string"></xsd:attribute>
</xsd:complexType>
<《spxx>
<《sp key="MXXH" value="明细序号"/>
<《sp key="SPMC" value="商品名称" />
<《sp key="SPBH" value="商品编号" />
<《sp key="GGXH" value="规格型号" />
<《sp key="JLDW" value="计量单位" />
<《sp key="SL" value="数量" />
<《sp key="DJ" value="单价" />
<《sp key="JE" value="金额" />
<《sp key="SLV" value="税率" />
<《sp key="SE" value="税额" />
<《sp key="HSBZ" value="含税标志" />
<《sp key="FPHXZ" value="发票行性质"/>
<《sp key="FLBM" value="分类编码" />
<《sp key="XSYH " value="分类编码使用,享受优惠"/>
<《sp key="YHSM" value="分类编码使用,优惠说明"/>
<《sp key="LSLVBS" value="分类编码使用,零税率标识"/>
<《sp key="ZZSTSGL " value="增值税特殊管理"/>
<《sp key="KCE" value="扣除额,差额征税使用"/>
<《/spxx>
<《spxx>…
<《/mxxx>
这个是完整的
public static void validateXMLByXSD() {
String xmlFileName = "Q:\_dev_stu\xsdtest\src\note.xml";
String xsdFileName = "Q:\_dev_stu\xsdtest\src\note.xsd";
try {
//创建默认的XML错误处理器
XMLErrorHandler errorHandler = new XMLErrorHandler();
//获取基于 SAX 的解析器的实例
SAXParserFactory factory = SAXParserFactory.newInstance();
//解析器在解析时验证 XML 内容。
factory.setValidating(true);
//指定由此代码生成的解析器将提供对 XML 名称空间的支持。
factory.setNamespaceAware(true);
//使用当前配置的工厂参数创建 SAXParser 的一个新实例。
SAXParser parser = factory.newSAXParser();
//创建一个读取工具
SAXReader xmlReader = new SAXReader();
//获取要校验xml文档实例
Document xmlDocument = (Document) xmlReader.read(new File(xmlFileName));
//设置 XMLReader 的基础实现中的特定属性。核心功能和属性列表可以在 [url]http://sax.sourceforge.net/?selected=get-set[/url] 中找到。
parser.setProperty(
"http://java.sun.com/xml/jaxp/properties/schemaLanguage",
"http://www.w3.org/2001/XMLSchema");
parser.setProperty(
"http://java.sun.com/xml/jaxp/properties/schemaSource",
"file:" + xsdFileName);
//创建一个SAXValidator校验工具,并设置校验工具的属性
SAXValidator validator = new SAXValidator(parser.getXMLReader());
//设置校验工具的错误处理器,当发生错误时,可以从处理器对象中得到错误信息。
validator.setErrorHandler(errorHandler);
//校验
validator.validate(xmlDocument);
XMLWriter writer = new XMLWriter(OutputFormat.createPrettyPrint());
//如果错误信息不为空,说明校验失败,打印错误信息
if (errorHandler.getErrors().hasContent()) {
System.out.println("XML文件通过XSD文件校验失败!");
writer.write(errorHandler.getErrors());
} else {
System.out.println("Good! XML文件通过XSD文件校验成功!");
}
} catch (Exception ex) {
System.out.println("XML文件: " + xmlFileName + " 通过XSD文件:" + xsdFileName + "检验失败。\n原因: " + ex.getMessage());
ex.printStackTrace();
}
}
/**
* 通过DTD校验XML
*/
public static void validateXMLByDTD() {
//todo:暂时不用,以后再说吧
}
}