java - 无法读取 XMLFile,异常 : java. io.FileNotFoundException : C:\Temp\logger. dtd(系统找不到指定的文件)

标签 java xml logging

我在读取由下面的类创建的 XML 文件时遇到问题。我相信这里有一些属性需要设置才能使用正确的文件目录。生成的 XML 文件:

<?xml version="1.0" encoding="WINDOWS-1252"?>
<!DOCTYPE log SYSTEM "logger.dtd">
如果删除包含 "logger.dtd"的行,则可以读取顶部的

。有人能解释一下发生了什么事吗?我正在从使用 SAXParser API 设置的同一 URI 进行读取。我按照此处的 SAX 解析说明进行操作:http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/

    package logging;

    import java.io.IOException;
    import java.util.logging.FileHandler;
    import java.util.logging.Handler;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    import java.util.logging.SimpleFormatter;
    import java.util.logging.XMLFormatter;

    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;

    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;

    public class Log {
static private FileHandler fileTxt;
static private SimpleFormatter formatterTxt;
static private FileHandler fileXML;
static private XMLFormatter formatterXML;



static public void setup(Logger theLogger) throws IOException{
    Logger logger = theLogger;

    logger.setLevel(Level.ALL);

    fileTxt = new FileHandler("C:\\Temp\\logging.txt");
    fileXML = new FileHandler("C:\\Temp\\XMLLogging.xml");

    formatterTxt = new SimpleFormatter();
    fileTxt.setFormatter(formatterTxt);
    logger.addHandler(fileTxt);

    formatterXML = new XMLFormatter();
    fileXML.setFormatter(formatterXML);
    logger.addHandler(fileXML);

    for(Handler h: logger.getHandlers()){
        System.out.println(h.getFormatter());
    }


}

}

最佳答案

虽然这个问题已经有一段时间了,但是,我遇到了这种情况,不得不努力寻求解决方案。我发现了这个,如果它也适用于其他人,可能是这样的

@Override
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
 if (systemId.contains("log4j.dtd")) {
  return new InputSource(new StringReader(""));
 } else {
  return null;
 }
}

实现此方法并提及您的 dtd 名称,它应该继续进行,没有任何异常。

关于java - 无法读取 XMLFile,异常 : java. io.FileNotFoundException : C:\Temp\logger. dtd(系统找不到指定的文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17976268/

相关文章:

linux - 在 linux 服务器中使用日志级别着色的尾部 logback 日志文件

c# - 如何使用 ASP.Net vNext/5 登录到输出窗口

java - JTable 仅在我在 Eclipse 中调整 JPanel 大小后显示

java - 同步方法调用另一个调用 wait() 的同步方法

java - 如何获取 XSD 文件中未定义的所有 XML 元素的列表

xml - 具有相同元素标签但数据唯一的XML解析

java - 无法与 Instagram 登录字段交互

java - JAXB XmlTransient 不起作用

java - NoClassDefFound错误: org/apache/xml/serialize/OutputFormat

git - git log --branch 在普通和裸存储库上有不同的行为吗?