校验xml的合法性

原创 2015年11月19日 10:54:17


方法一:通过DTD文件

方法二:通过XSD文件

最后选用了方法二,原因如下:

· XML Schema 可针对未来的需求进行扩展

· XML Schema 更完善,功能更强大

· XML Schema 基于 XML 编写

· XML Schema 支持数据类型

· XML Schema 支持命名空间

 

太官方的理由。我用xsd的原因是:正在做的是web service 的项目,需要接受客户端传入的xml数据,可能会出现一下情况:

1.Xml格式错误

2.结点数据类型错误

3.数据不完整,结点数据为空

DTD不能很好的解决这些问题,所以用了XSD。用了一下午的时间熟悉基本的写法,第二天直接按xml的要求编写xsd文件。过程中遇到了一个问题:

xsd中提供的时间日期类型(dateTime)是这样的:YYYY-MM-DDThh:mm:ss

而我需要的是这样的:YYYY-MM-DD hh:mm:ss,也就是把T换成空格。百度了很多资料也不知道怎么解决,最后用的正则解决,暂时可用,不知道后面会不会出问题。

代码如下:

<!-- 自定义时间日期类型 yyyy-MM-dd HH:mm:ss -->
	<xs:simpleType name="myDateTime">	
		<xs:restriction base="xs:string">
			<xs:pattern value="((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d|((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))"></xs:pattern>
		</xs:restriction>
	</xs:simpleType>


版权声明:本文为博主原创文章,未经博主允许不得转载。

XML基础知识——使用schema校验XML文件合法性(四)

一、源代码如下 (1)、第一种方式 /** * 使用Schema验证XML的合法性 * * @param xmlDocument 要验证的XML文件 * @param xsdF...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

使用xmllint处理/验证xml

xmllint是一个很方便的处理及验证xml的工具,linux下只要安装libxml2就可以使用这个命令,下面整理一些常用功能 1. --format 此参数用于格式化xml,使其具有良好的可读性。 ...
  • qmhball
  • qmhball
  • 2013年05月21日 15:21
  • 15595

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

检查xml格式是否正确

1.检查xml格式 public static bool IsCorrectXmlFormat(string configuration) { bool is...

C++之多态

一、多态定义 多态是每种面向对象语言的重要概念。它理解起立就是父类指针指向了子类的实例,然后通过父类指针调用实际成员函数的过程.我们知道虚函数是实现多态的重要机制。假如一个类中有虚函数,那么在类实例的...
  • armwind
  • armwind
  • 2016年07月14日 22:25
  • 964

算法导论 动态规划之最长回文子序列

首先需要强调的一点是:子序列不同于子串,子串要求必须连续,而子序列则不需要,与本篇讨论的这个问题比较相似的一个问题就是求一个字符串的最长回文子串,这个问题我们在下一篇会进行讨论。 这里我们说两种解...

Delphi 7验证XML合法性(利用DTD、XSD)

拥有正确语法的XML被称为“形式良好”的XML。通过DTD验证的XML是“合法”的XML。DTD(文档类型定义)的作用是定义XML 文档的合法构建模块。它使用一系列的合法元素来定义文档结构。XML S...

XSD 验证 xml 合法性

package cn.com.utils; import java.io.ByteArrayInputStream; import java.io.IOException; import java...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:校验xml的合法性
举报原因:
原因补充:

(最多只允许输入30个字)