以下のクラスで作成された XML ファイルの読み取りに問題があります。ここには、正しいファイル ディレクトリを使用するために設定する必要があるプロパティがあると思われます。以下で生成される XMLfile:
<?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());
}
}
}