Java XSD验证XML的方法总结

网上流传着很多XSD验证XML是否正确的方法,XSD是DTD的替代者。

用javax.xml.validation.Validator.validate(Source source)应该是最快捷方法的 

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;

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.xml.sax.SAXException;

/**
 * 校验xml工具类
 */
public class ValidateXML {
	private ValidateXML() {
		throw new Error("工具类不允许实例化");
	}
	public static boolean validateXML(String xsdPath, String xmlData) {
		// 建立schema工厂
		SchemaFactory schemaFactory = SchemaFactory
				.newInstance("http://www.w3.org/2001/XMLSchema");
		// 建立验证文档文件对象,利用此文件对象所封装的文件进行schema验证
		File schemaFile = new File(xsdPath);
		// 利用schema工厂,接收验证文档文件对象生成Schema对象
		Schema schema = null;
		try {
			schema = schemaFactory.newSchema(schemaFile);
		} catch (SAXException e) {
			e.printStackTrace();
		}
		// 通过Schema产生针对于此Schema的验证器,利用schenaFile进行验证
		Validator validator = schema.newValidator();
		// 得到验证的数据源
		Source source = new StreamSource(String2InputStream(xmlData));
		// 开始验证,成功输出success!!!,失败输出fail
		// 参数还可以用文件的String转为的inputstreamnew
		// ByteArrayInputStream(text.getBytes("UTF-8"));
		try {
			validator.validate(source);
		} catch (Exception ex) {
			ex.printStackTrace();
			return false;
		}
		return true;
	}
	/**
	 * 将字符串转换为流对象
	 * @param str
	 *            需要装的字符串
	 * @return 返回流对象
	 * @since CodingExample Ver(编码范例查看) 1.1
	 */
	private static InputStream String2InputStream(String str) {
		ByteArrayInputStream stream = null;
		try {
			stream = new ByteArrayInputStream(str.getBytes("UTF-8"));
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return stream;
	}
}

【2】

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java进行XML验证可以使用Java API for XML Processing (JAXP)提供的工具,如下所示: 1. 创建Schema对象 首先,需要创建一个Schema对象,它可以从一个xsd文件加载。可以使用javax.xml.validation.SchemaFactory类来创建Schema对象。 ```java SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = factory.newSchema(new File("path/to/xsd")); ``` 2. 创建Validator对象 接下来,需要创建Validator对象,它将使用Schema对象对XML文件进行验证。可以使用javax.xml.validation.Validator类来创建Validator对象。 ```java Validator validator = schema.newValidator(); ``` 3. 执行验证 最后,使用Validator对象的validate方法,对XML文件进行验证。 ```java validator.validate(new StreamSource(new File("path/to/xml"))); ``` 如果XML文件通过了验证,validate方法将正常返回;否则,将抛出SAXException异常,其包含详细的错误信息。 完整的代码示例: ```java import javax.xml.XMLConstants; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import java.io.File; public class XmlValidator { public static void main(String[] args) throws Exception { SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = factory.newSchema(new File("path/to/xsd")); Validator validator = schema.newValidator(); validator.validate(new StreamSource(new File("path/to/xml"))); } } ``` 其,"path/to/xsd"和"path/to/xml"分别表示xsd文件和xml文件的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值