<script type="text/javascript">function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script> 其中我的XML文件为:

<? xml version="1.0" encoding="UTF-8" ?>
< birthdate >
< month > January </ month >
< day > 21 </ day >
< year > 1983 </ year >
< name > aaa </ name >
</ birthdate >

对应的XSD文件为:

<? xml version="1.0" encoding="UTF-8" ?>
< xs:schema  xmlns:xs ="http://www.w3.org/2001/XMLSchema" >
< xs:element  name ="birthdate" >
< xs:complexType >
< xs:sequence >
< xs:element  name ="month"  type ="xs:string"   />
< xs:element  name ="day"  type ="xs:int"   />
< xs:element  name ="year"  type ="xs:int"   />
< xs:any  minOccurs ="0" />
</ xs:sequence >
</ xs:complexType >
</ xs:element >
</ xs:schema >

我写的java程序为:

public   class  XMLParse  ... {
    public static void main(String[] args) 
    throws SAXException, IOException, ParserConfigurationException ...{
     SchemaFactory factory 
       = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
      File schemaLocation = new File("D:/tmp/test.xsd");
      File xmlFile = new File("D:/tmp/test.xml");
      Schema schema = factory.newSchema(schemaLocation);
      Validator validator = schema.newValidator();
      DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
      domFactory.setNamespaceAware(true);
      DocumentBuilder builder = domFactory.newDocumentBuilder();
      Document doc = builder.parse(xmlFile);
      DOMSource source = new DOMSource(doc);
      DOMResult result = new DOMResult();
      try ...{
          validator.validate(source, result);
          Document augmented = (Document) result.getNode();
      }
      catch (SAXException ex) ...{
          System.out.println(ex.getMessage());
      }  
  }
}

在执行的时候,总是提示:cvc-complex-type.2.4.c:严格输入了匹配通配符,但还是找不到元素“name”的声明。
但是我在XSD中,已经声明了一个 <xs:any minOccurs="0"/>的任意类型,支持扩展,但是确总是不正确.

后了解到,xsd中any虽然是便于xml文件的扩展,但是也是有条件的扩展,所扩展的内容需要由非本身的一个xsd文件来描述,而xml文件中的<xs:any>部分,也必须符合子xsd的格式限制.
故修改以上的xsd文件为:
<? xml version="1.0" encoding="UTF-8" ?>
< xs:schema  xmlns:xs ="http://www.w3.org/2001/XMLSchema"   >
< xs:include  schemaLocation ="D:/tmp/name.xsd" />
< xs:element  name ="birthdate" >
< xs:complexType >
< xs:sequence >
< xs:element  name ="month"  type ="xs:string"   />
< xs:element  name ="day"  type ="xs:int"   />
< xs:element  name ="year"  type ="xs:int"   />
< xs:any  minOccurs ="0" />
</ xs:sequence >
</ xs:complexType >
</ xs:element >
</ xs:schema >
其中d:/tmp/name.xsd文件为对xml文件中的<name>元素进行的限定:
<? xml version="1.0" encoding="UTF-8" ?>
< xs:schema  xmlns:xs ="http://www.w3.org/2001/XMLSchema" >
< xs:element  name ="name"  type ="xs:string"   />
</ xs:schema >
进行这样的修改后,对于以上的xml文件的xsd校验就成功了.

通过xsd校验xml文件相关推荐

  1. java xsd校验xml文件

    1.需要maven依赖,版本的话根据自己需求来定 <dependency><groupId>dom4j</groupId><artifactId>dom ...

  2. java xsd_『XSD校验XML』使用java通过XSD校验XML文件

    本文简单介绍使用java语言,通过XSD文件来校验XML文件结构. XML和XSD介绍 MySQL数据迁移和项目魔法计算器都用到了XML文件,这样可以解耦出配置属性,使项目更加灵活,不用动不动就去改动 ...

  3. JBPM流程部署校验之java利用XSD校验XML

    JBPM流程定义校验之java利用XSD校验XML 上篇我们学习了在.net中怎样利用XSD来验证xml,今天我们来看一下在java中怎样实现利用xsd来校验xml! /**  *   */ pack ...

  4. xsd校验xml工具

    xml校验工具 xml校验工具,用于校验xml报文是否符合xsd规范 在线网站也可以校验 https://www.xmlvalidation.com/ 源码及工具下载地址 https://downlo ...

  5. java使用xsd校验xml样例

    知识点: XSD文件是指XML结构定义 ( XML Schemas Definition )文件,是DTD的替代品.可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合 ...

  6. java xsd校验_Java使用xsd校验xml

    最近项目需要使用xsd对xml进行预校验,于是封装了一个工具类,来完成校验工作. 完整代码如下: import java.io.File; import java.io.IOException; im ...

  7. 通过xsd校验xml

    不依赖第三方工具 目录 核心代码 说明 使用 使用JDK默认的 errorHandler 使用自定义的 errorHandler 参考文档 核心代码 import java.io.ByteArrayI ...

  8. XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML

    XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...

  9. java xsd 解析 xml文件_xsd解析xml

    下面讲述根据xml生成对应序列化反序列化类的过程,xml需要首先转化为xsd,然后再生成为实体类.其中,XSD是XML Schema Definition的缩写. 1.拥有一个xml文件 2.打开vs ...

最新文章

  1. hive export import
  2. python面试-Python面试中常见的3个问题
  3. overfitting
  4. RS-232交叉串口线的做法与测试.doc
  5. 强烈推荐:程序员必备的两个超级工具,一个是百宝箱,一个是百宝库
  6. linux进程---exec族函数(execl, execlp, execv, execvp, )解释和配合fork的使用
  7. 在Linux下快速搭建LAMP开发平台.doc
  8. mysql索引的类型和查看、添加、修改、删除索引的方法介绍
  9. Python面试题之下面代码会输出什么
  10. 老公想入手一块10万左右的手表有哪些推荐?
  11. 通知模式实现两个textField传值及模态视图——iOS开发
  12. 按平均成绩排行c语言文件操作,学生成绩管理系统(c语言结构体以及文件操作)实验报告精选.doc...
  13. 机器人把大龙拉出来_英雄联盟之我的电竞梦
  14. Visual Studio 2017各版本安装包离线下载、安装全解析
  15. ## 2019-8-30 光滑粒子流体力学开源软件(Dual)sphysics使用中遇到的一些问题1
  16. 新中大怎么修改服务器,新中大软件服务器地址修改
  17. txt 文本文件替换快捷键
  18. wamp mysql_wamp中如何打开mysql
  19. 【离散数学】编程练习:求偏序集中的极大元与极小元
  20. 页面中的黑白滤镜css3,filter属性

热门文章

  1. openstack-iass搭建 二
  2. SQL Compliance Manager Crack
  3. 大物下学期期末复习笔记
  4. PT100热电阻温度传感器 铂热电阻 德国贺利氏 硅胶四氟镀锡屏蔽线
  5. Linux Chromium源码编译
  6. ITSM开源工具OTRS安装
  7. Java程序员最全面的学习路线图
  8. Qt-qrc资源文件-rcc打包-程序调用-ZIP压缩和解压-安装程序制作参考
  9. 实时语义分割网络 BiSeNet(附代码解读)
  10. Eclipse无法启动