请教dom4j schema中文路径校验问题

ustb_diego 2012-08-30 08:35:27
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();
}

}

}
...全文
6014 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cds27 2012-10-17
应该是编码问题,如果是在中文windows下,那你先将字符串转成gb2312编码即可。
回复
诺维斯基 2012-10-12
回复
相关推荐
发帖
XML/XSL
创建于2007-09-28

8842

社区成员

XML/XSL相关问题讨论专区
申请成为版主
帖子事件
创建了帖子
2012-08-30 08:35
社区公告
暂无公告