Java SAX解析器在windows中不工作?
我有多个名为media01.xml、media02.xml等xml文件。 我编写了一个java代码,它解析这个xml文件,获取它的表名并重命名xml文件。例如:media01-->Records.xml、media02-->Info.xml等。 该守则的部分内容如下:Java SAX解析器在windows中不工作?,java,xml,Java,Xml,我有多个名为media01.xml、media02.xml等xml文件。 我编写了一个java代码,它解析这个xml文件,获取它的表名并重命名xml文件。例如:media01-->Records.xml、media02-->Info.xml等。 该守则的部分内容如下: File inputFile = new File(path+File.separator+"media0"+xmlval+".xml"); if(inputFile.exists()) {
File inputFile = new File(path+File.separator+"media0"+xmlval+".xml");
if(inputFile.exists())
{
try{
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
aaaa a= new aaaa();
saxParser.parse(inputFile, a);
String abc = aaaa.nsList();
File dest = new File(path+File.separator+abc+".xml");
inputFile.renameTo(dest);
xmlval++;
}
catch(Exception e)
{
System.err.println(""+e);
}
}
我调用的函数是:
class aaaa extends DefaultHandler {
boolean bFirstName = false;
boolean bLastName = false;
boolean loc = false;
String name = null;
static String ans;
@Override
public void startElement(String uri,String localName, String qName, Attributes attributes)
throws SAXException {
if (qName.equalsIgnoreCase("table")) {
name = attributes.getValue("name");
}
if(qName.equalsIgnoreCase("row")){
}
ans=name;
}
public static String nsList(){
return ans;
}
}
我在服务器上部署了我的项目,当我从ubuntu操作系统运行该项目时,xml文件名会发生变化,但当我从windows运行时,xml文件名会发生变化,因此不会重命名这些文件。可能是什么问题?
请帮帮我。提前感谢。我不认为这是一个解析器问题,因为没有问题,而且很多依赖SAX解析配置文件的项目都使用SAXParser,比如Spring、jsf和其他很多项目,所以这不太可能是SAXParser问题,所以问题可以由我来解决
File dest = new File(path+File.separator+abc+".xml");
inputFile.renameTo(dest);
这是平台相关的指令,您最好通过这样做来检查重命名是否成功完成
File dest = new File(path+File.separator+abc+".xml");
boolean renameSuccess=inputFile.renameTo(dest);
System.out.println("renaming "+renameSuccess?"succeeded":"failed");
在将在一个系统上测试的应用程序部署到另一个系统时,我可能遇到的一个问题是,在类Unix系统上,路径和文件名区分大小写。您的文件可能已经存在于目标系统上,但情况不同。无论如何,正如achabahe提到的,重命名文件时应该检查返回值 另外,路径分隔符依赖于系统,但通常Java不会产生任何问题。例如,您可以在Windows路径中使用“/”。我只是建议您以这种方式实例化
文件
对象:
File myFile = new File(myPath, myFileName);
这是如此容易阅读和系统独立
我还建议您跟踪是否确实打开了源文件。顺便问一下,您不能在调试模式下运行它吗?您的文件路径是什么,它是可写的吗?是否有异常抛出?您是否检查了输出(在您的控制台中,shell…)?您是否意识到行
if(qName.equalsIgnoreCase(“row”){}
完全不执行任何操作?好的。。。它不会抛出任何异常调试可以在localhost和localhost中完成