`
cqyqing
  • 浏览: 56909 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

xsd通过java验证科学计数法

阅读更多
是在不容易,javascript中和java中验证数字包含科学计数法,都很容易通过,而且写法很多,随便google或baidu以下就出来,但是使用java通过xsd验证xml文件中的科学计数法内容,怎么写都不同,经过N次试验,被我试验出来了,写法如下:
<xs:simpleType name="intType">
<xs:restriction base="xs:string">
<xs:pattern value="((-)?\d*(\.\d*)?([Ee]?(-)?\d*)?)/>
</xs:restriction>
  </xs:simpleType>

Java验证是使用apache的common包axiom,验证如下:
package com.sunrise.jnjp.test;

import java.io.ByteArrayInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import javax.xml.XMLConstants;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.xml.sax.SAXException;

public class AxiomTest {

	public static boolean validate(String schemaLocaltion, OMElement request)
			throws SAXException, IOException {
		// 获取Schema工厂类
		// 这里的XMLConstants.W3C_XML_SCHEMA_NS_URI的值就是://http://www.w3.org/2001/XMLSchema
		SchemaFactory factory = SchemaFactory
				.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
		// Schema实例
		Schema schema = null;
		// 获取XSD文件,以流的方式读取到Source中
		// XSD文件的位置相对于类文件位置
		InputStream inp = AxiomTest.class
		.getClassLoader().getResourceAsStream(schemaLocaltion);
		Source schemaSource = new StreamSource(inp);
		// 实例化Schema对象
		schema = factory.newSchema(schemaSource);
		// 这里是将一个DOM树对象转换成流对象,以便对DOM树对象验证
		// 如果是对XML文件进行验证,用FileInputStream即可
		String input = request.toString();
		ByteArrayInputStream bais = new ByteArrayInputStream(input
				.getBytes("UTF-8"));
		// 获取验证器,验证器的XML Schema源就是之前创建的Schema
		Validator validator = schema.newValidator();
		Source source = new StreamSource(bais);
		// 执行验证
		try {
			validator.validate(source);
			return true;
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
			return false;
		}
	}

	/**
	 * get OMElement soap request from specified XML file.
	 * 
	 * @param request
	 * @return
	 * @throws FileNotFoundException
	 * @throws XMLStreamException
	 * @throws FactoryConfigurationError
	 */
	public static OMElement getRequest(String filePath)
			throws FileNotFoundException, XMLStreamException,
			FactoryConfigurationError {
		XMLStreamReader reader = XMLInputFactory.newInstance()
				.createXMLStreamReader(AxiomTest.class.getResourceAsStream(filePath));
		StAXOMBuilder builder = new StAXOMBuilder(reader);
		OMElement requestMessage = builder.getDocumentElement();
		return requestMessage;
	}
	
	public static OMElement getRequest(InputStream is)
		throws FileNotFoundException, XMLStreamException,
		FactoryConfigurationError {
	XMLStreamReader reader = XMLInputFactory.newInstance()
			.createXMLStreamReader(is);
	StAXOMBuilder builder = new StAXOMBuilder(reader);
	OMElement requestMessage = builder.getDocumentElement();
	return requestMessage;
	}

	public static void main(String[] args) // throws SAXException, IOException,
	{
		try {
			if (validate("xsd/Common.xsd", getRequest("test.xml"))) {
				System.out.println("customer_err.xml格式良好");
			} else {
				System.out.println("customer_err.xml格式有误,请检查!");
			}
		} catch (Exception ex) {
			ex.printStackTrace();
			System.out.println("文件格式有误,请检查!");
		}

	}



}

xsd文件在附件中
分享到:
评论

相关推荐

    根据xsd批量生成java类

    根据xsd批量生成java类,觉得很方便也很酷。但是有时候xsd生成的java类中含有汉字,结果总是有些问题。 可是xjc命令参数又没有encoding参数之类的。在网上搜了一通,忽然发现了一个好东东:xjc是由...

    castor1.4 xsd生成java

    在XML Schema(XSD)广泛应用于定义XML数据结构的今天,Castor提供了一个方便的方法,将XSD文件自动转化为Java类,使得开发者能够更轻松地处理XML数据。以下是关于"Castor 1.4 xsd生成java"的相关知识点: 1. **...

    JAXB 利用xsd文件生成java类

    在Java开发中,JAXB提供了一种方便的方式,允许开发者通过XML Schema (XSD) 文件来生成对应的Java类,从而简化XML处理的工作流程。 1. **XML Schema (XSD) 文件**: - XML Schema是一种W3C标准,用于定义XML文档的...

    java生成xsd,xml示例

    通过阅读和理解这些代码,你可以更好地掌握在Java环境下处理XML和XSD的方法。 总结起来,Java生成XML和XSD涉及到XML和XSD的基本概念,以及使用JAXB等Java库进行XML操作的技术。在实际项目中,理解并熟练运用这些...

    xsd转换成java对象

    XSD转换成Java对象的过程,也称为XML到Java对象的绑定或者XML Schema Binding,是将XML数据映射为Java类,使得程序能够方便地读取、操作和验证XML数据。这一过程在处理XML数据丰富的系统中非常常见,如Web服务或企业...

    xml2xsd2java2.rar

    在Java开发中,XML和XSD的使用十分常见,因为它们提供了数据的标准化表示和验证机制。"xml2xsd2java2.rar"压缩包中的工具类可能是用于帮助开发者进行XML与XSD之间的相互转换,以及将这些定义转换为Java对象,从而...

    通过xsd验证xml

    在开发过程中,通过XSD验证XML文档是非常重要的一步,可以确保数据符合预设的规则。 在Visual Studio 2005(VS2005)中,使用C++来实现XML文档与XSD模式的验证是一个常见的需求。VS2005提供了一套强大的XML工具和库...

    xml文件转xsd文件

    将XML文件转换为XSD文件,主要是为了更好地管理和验证XML文档的结构,确保数据的一致性和准确性,同时也便于生成对应的Java类,以进行程序开发。 在Java开发中,经常需要处理XML数据。有了XSD文件,开发者可以使用...

    xml生成xsd工具

    xml生成xsd 使用方法:java -jar trang.jar EchoRequest.xml EchoRequest.xsd

    XML验证器(XSD验证XML)

    然后,你可以加载XML文档和对应的XSD模式,通过调用相应的验证方法进行验证。如果XML文档符合XSD模式,验证器将返回成功;否则,它会提供错误信息,指出不符合的地方。 在提供的链接中,,博主详细介绍了如何在...

    xsd namexsd namexsd name

    java xsd java xsd java xsd java xsd java xsd java xsd

    xml 文件与xsd文件的转化以及xsd验证xml的合法性

    6. **验证转化**:完成XSD文件编写后,可以用这个XSD文件来验证XML文档是否符合定义的结构和约束。 XSD验证XML的合法性: 1. **解析XSD**:首先,解析XSD文件以获取其定义的规则。 2. **匹配元素和属性**:遍历XML...

    根据XML生成xsd

    XML生成XSD xml生成xsd 生成xsd...java -jar trang.jar xml文件绝对路径 要生成的xsd文件绝对路径 例如在当前目录有文件aaa.xml,需要生成xsd文件名为aaa,并存放在当前目录: java -jar trang.jar aaa.xml aaa.xsd

    C#验证xml是否满足xsd规则

    总结来说,C#提供了强大的XML和XSD处理能力,开发者可以通过`XmlSchemaSet`、`XmlReaderSettings`等工具,轻松地实现XML文档的结构和数据类型的验证,确保数据的准确性和一致性。在WPF环境中,这一功能可以进一步...

    6、xsd验证xml文件的java代码

    NULL 博文链接:https://nickfover.iteye.com/blog/2155663

    xsd生成javaBean

    在Java开发中,XML Schema(XSD)是一种用于定义XML文档结构的标准,它定义了元素、属性、数据类型等规则。XSD文件的使用有助于确保XML数据的有效性和一致性。而将XSD转换为JavaBean是将这些XML模式映射到Java对象的...

    wsdl2java源码-xsd2java:从xsd-shemas生成java源代码

    xsd2java gradle 插件 用于从 xsd 模式生成 java 的 Gradle 插件 问题 如果您对插件有任何问题,请在 github 上提交问题, 贡献 只要他们是理智的,就欢迎贡献。 贡献者 尼尔斯·拉尔斯格德, 马茨·福格利, 托本·...

    自动生成xsd所需的jar包

    XSD(XML Schema Definition)则是用来规范和验证XML文档结构的一种语言,确保XML文件的数据符合特定的规则。XSD文件通过定义元素、属性、数据类型等来约束XML文档,确保数据的准确性和一致性。 标题提到的“自动...

    微软XSD 根据XML生成Java类文件

    xsd.exe 可用于根据 XML 文件...下载xsd.exe文件,命令行进入文件所在目录执行以下命令即可生成Java类文件(如下表示xml文件与xsd.exe在同一目录) 1)xsd.exe fileName.xml 2)xjc -d . -p packageName ./fileName.xsd

Global site tag (gtag.js) - Google Analytics