我无法读取由下面的类创建的 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());
}
}
}