请教dom4j schema中文路径校验问题
xml和schema均在中文路径中,结果怎么也无法进行校验。
如果在英文路径中,就不存在问题。
请教各位高手如何解决中文路径问题????
注:采用dom4j主要因为属性不会被排序,看着比较舒服。
附代码:
import java.io.File;
import java.io.StringWriter;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.validation.SchemaFactory;
import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.SAXValidator;
import org.dom4j.io.XMLWriter;
import org.dom4j.util.XMLErrorHandler;
public class test
{
/**
* @param args
*/
public static void main(String[] args)
{
try
{
String xmlname = "E:\\work\\ClearCase\\TODE_comp\\代码区\\tool\\todecluster.xml";
String xsdname = "E:\\work\\ClearCase\\TODE_comp\\代码区\\tool\\tode.xsd";
//String xmlname = "E:\\work\\java\\test\\todecluster.xml";
//String xsdname = "E:\\work\\java\\test\\tode.xsd";
SAXParserFactory factory = SAXParserFactory.newInstance();
// 解析器在解析时验证 XML 内容。
factory.setValidating(true);
// 指定由此代码生成的解析器将提供对 XML 名称空间的支持。
factory.setNamespaceAware(true);
// 使用当前配置的工厂参数创建 SAXParser 的一个新实例。
SAXParser parser = factory.newSAXParser();
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",
xsdname);
XMLErrorHandler errorHandler = new XMLErrorHandler();
//读取doc
SAXReader xmlReader = new SAXReader();
Document doc = xmlReader.read(new File(xmlname));
xmlReader.setErrorHandler(errorHandler);
if (errorHandler.getErrors().hasContent())
{
OutputFormat of=new OutputFormat();
of.setNewLineAfterDeclaration(false);
of.setNewlines(true);
of.setIndent(true);
of.setIndent(" ");
of.setIndentSize(4);
of.setEncoding("GBK");
StringWriter swriter = new StringWriter();
XMLWriter writer = new XMLWriter(swriter, of);
writer.write(errorHandler.getErrors());
System.out.println( swriter.toString());
}
//校验
SAXValidator validator = new SAXValidator(parser.getXMLReader());
validator.setErrorHandler(errorHandler);
validator.validate(doc);
if (errorHandler.getErrors().hasContent())
{
OutputFormat of=new OutputFormat();
of.setNewLineAfterDeclaration(false);
of.setNewlines(true);
of.setIndent(true);
of.setIndent(" ");
of.setIndentSize(4);
of.setEncoding("GBK");
StringWriter swriter = new StringWriter();
XMLWriter writer = new XMLWriter(swriter, of);
writer.write(errorHandler.getErrors());
System.out.println( swriter.toString());
}
System.out.println("ok");
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}