请教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();
}

}

}
...全文
6093 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cds27 2012-10-17
  • 打赏
  • 举报
回复
应该是编码问题,如果是在中文windows下,那你先将字符串转成gb2312编码即可。
诺维斯基 2012-10-12
  • 打赏
  • 举报
回复

8,909

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧