是在不容易,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类中含有汉字,结果总是有些问题。 可是xjc命令参数又没有encoding参数之类的。在网上搜了一通,忽然发现了一个好东东:xjc是由...
在XML Schema(XSD)广泛应用于定义XML数据结构的今天,Castor提供了一个方便的方法,将XSD文件自动转化为Java类,使得开发者能够更轻松地处理XML数据。以下是关于"Castor 1.4 xsd生成java"的相关知识点: 1. **...
在Java开发中,JAXB提供了一种方便的方式,允许开发者通过XML Schema (XSD) 文件来生成对应的Java类,从而简化XML处理的工作流程。 1. **XML Schema (XSD) 文件**: - XML Schema是一种W3C标准,用于定义XML文档的...
通过阅读和理解这些代码,你可以更好地掌握在Java环境下处理XML和XSD的方法。 总结起来,Java生成XML和XSD涉及到XML和XSD的基本概念,以及使用JAXB等Java库进行XML操作的技术。在实际项目中,理解并熟练运用这些...
XSD转换成Java对象的过程,也称为XML到Java对象的绑定或者XML Schema Binding,是将XML数据映射为Java类,使得程序能够方便地读取、操作和验证XML数据。这一过程在处理XML数据丰富的系统中非常常见,如Web服务或企业...
在Java开发中,XML和XSD的使用十分常见,因为它们提供了数据的标准化表示和验证机制。"xml2xsd2java2.rar"压缩包中的工具类可能是用于帮助开发者进行XML与XSD之间的相互转换,以及将这些定义转换为Java对象,从而...
在开发过程中,通过XSD验证XML文档是非常重要的一步,可以确保数据符合预设的规则。 在Visual Studio 2005(VS2005)中,使用C++来实现XML文档与XSD模式的验证是一个常见的需求。VS2005提供了一套强大的XML工具和库...
将XML文件转换为XSD文件,主要是为了更好地管理和验证XML文档的结构,确保数据的一致性和准确性,同时也便于生成对应的Java类,以进行程序开发。 在Java开发中,经常需要处理XML数据。有了XSD文件,开发者可以使用...
xml生成xsd 使用方法:java -jar trang.jar EchoRequest.xml EchoRequest.xsd
然后,你可以加载XML文档和对应的XSD模式,通过调用相应的验证方法进行验证。如果XML文档符合XSD模式,验证器将返回成功;否则,它会提供错误信息,指出不符合的地方。 在提供的链接中,,博主详细介绍了如何在...
java xsd java xsd java xsd java xsd java xsd java xsd
6. **验证转化**:完成XSD文件编写后,可以用这个XSD文件来验证XML文档是否符合定义的结构和约束。 XSD验证XML的合法性: 1. **解析XSD**:首先,解析XSD文件以获取其定义的规则。 2. **匹配元素和属性**:遍历XML...
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处理能力,开发者可以通过`XmlSchemaSet`、`XmlReaderSettings`等工具,轻松地实现XML文档的结构和数据类型的验证,确保数据的准确性和一致性。在WPF环境中,这一功能可以进一步...
NULL 博文链接:https://nickfover.iteye.com/blog/2155663
在Java开发中,XML Schema(XSD)是一种用于定义XML文档结构的标准,它定义了元素、属性、数据类型等规则。XSD文件的使用有助于确保XML数据的有效性和一致性。而将XSD转换为JavaBean是将这些XML模式映射到Java对象的...
xsd2java gradle 插件 用于从 xsd 模式生成 java 的 Gradle 插件 问题 如果您对插件有任何问题,请在 github 上提交问题, 贡献 只要他们是理智的,就欢迎贡献。 贡献者 尼尔斯·拉尔斯格德, 马茨·福格利, 托本·...
XSD(XML Schema Definition)则是用来规范和验证XML文档结构的一种语言,确保XML文件的数据符合特定的规则。XSD文件通过定义元素、属性、数据类型等来约束XML文档,确保数据的准确性和一致性。 标题提到的“自动...
xsd.exe 可用于根据 XML 文件...下载xsd.exe文件,命令行进入文件所在目录执行以下命令即可生成Java类文件(如下表示xml文件与xsd.exe在同一目录) 1)xsd.exe fileName.xml 2)xjc -d . -p packageName ./fileName.xsd