2 sinat 35111936 sinat_35111936 于 2016.09.13 17:52 提问

关于xsd校验xml的问题,跪求大神解答 5C

< spxx>
               
             
< spxx>

5个回答

sinat_35111936
sinat_35111936   2016.09.13 17:53

代码如下

< spxx>
                《sp key="MXXH" value="明细序号"/》
             《sp key="SPMC" value="商品名称" /》
< spxx>
将以上用xsd进行校验,跪求大神指导

qq_23039605
qq_23039605   2016.09.13 19:07

这样写: 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>

sinat_35111936
sinat_35111936 <spxx> <sp key="MXXH" value="明细序号"/> <sp key="SPMC" value="商品名称" /> <sp key="SPBH" value="商品编号" /> <spxx>… </mxxx>,像这种的怎么用xsd校验的?跪求
大约一年之前 回复
sinat_35111936
sinat_35111936 长度和值怎么校验昵
大约一年之前 回复
sinat_35111936
sinat_35111936   2016.09.14 15:03

<《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> 这个是完整的

sinat_35111936
sinat_35111936   2016.09.14 15:04


        <《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>

这个是完整的

sup557
sup557   2016.09.15 19:04

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:暂时不用,以后再说吧 
} 

}

Csdn user default icon
上传中...
上传图片
插入图片