schema校验获后取出错的xml节点

[复制链接]
查看11 | 回复0 | 2021-1-27 06:48:25 | 显示全部楼层 |阅读模式
紧急:各位我现在在做schema校验,校验错误后需要获取到这个节点的详细路径,也就是从父标签父标签,一直到最顶部,现在没办法获取到这个详细的标签,大家有好的办法吗?代码如下:
publicstaticListvalidateXMLSchema(StringxmlName,StringzipName,StringxsdPath,StringxmlPath){
Listlist=newArrayList();
try{
//创建默认的XML错误处理器
XMLErrorHandlererrorHandler=newXMLErrorHandler();
//获取基于SAX的解析器的实例
SAXParserFactoryfactory=SAXParserFactory.newInstance();
//解析器在解析时验证XML内容。
factory.setValidating(true);
//指定由此代码生成的解析器将提供对XML名称空间的支持。
factory.setNamespaceAware(true);
//使用当前配置的工厂参数创建SAXParser的一个新实例。
SAXParserparser=factory.newSAXParser();
//创建一个读取工具
SAXReaderxmlReader=newSAXReader();
//获取要校验xml文档实例
DocumentxmlDocument=(Document)xmlReader.read(newFile(xmlPath));
//设置XMLReader的基础实现中的特定属性。核心功能和属性列表可以在http://sax.sourceforge.net/?selected=get-set中找到。
parser.setProperty(
"http://java.sun.com/xml/jaxp/properties/schemaLanguage",
"http://www.w3.org/2001/XMLSchema");
parser.setProperty(
"http://java.sun.com/xml/jaxp/properties/schemaSource",
"file:"+xsdPath);
//创建一个SAXValidator校验工具,并设置校验工具的属性
SAXValidatorvalidator=newSAXValidator(parser.getXMLReader());
//设置校验工具的错误处理器,当发生错误时,可以从处理器对象中得到错误信息。
validator.setErrorHandler(errorHandler);
//校验
validator.validate(xmlDocument);
//XMLWriterwriter=newXMLWriter(OutputFormat.createPrettyPrint());
//如果错误信息不为空,说明校验失败,打印错误信息
if(errorHandler.getErrors().hasContent()){
errorHandler.getErrors().content();
//System.out.println("XML文件通过XSD文件校验失败!");
//System.out.println(errorHandler.getErrors().getNamespacePrefix());
//writer.write(errorHandler.getErrors());
Listelements=errorHandler.getErrors().elements();
for(inti=0;i -->
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行