我實現了code讓我打印格式的XML如何更改默認的日誌記錄在Java中變壓器
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.transform.ErrorListener;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
public class TransformThis implements ErrorListener {
public static void main(String[] args) throws java.lang.Exception {
TransformThis test = new TransformThis();
String goodXML;
String badXML;
goodXML = "<root><level1>WellFormed</level1></root>";
System.out.println(test.prettyPrint(goodXML));
badXML = "<root><level1>Not Well Formed</level1>";
System.out.println(test.prettyPrint(badXML));
}
public String prettyPrint(String xml) {
Source xmlInput = new StreamSource(new StringReader(xml));
StringWriter stringWriter = new StringWriter();
StreamResult xmlOutput = new StreamResult(stringWriter);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
transformerFactory.setAttribute("indent-number", 4);
try {
Transformer transformer = transformerFactory.newTransformer();
transformer.setErrorListener(this);
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.transform(xmlInput, xmlOutput);
} catch (Exception ex) {
System.out.println("My message: " + ex.getMessage());
}
return xmlOutput.getWriter().toString();
}
@Override
public void warning(TransformerException exception) throws TransformerException {
//throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void error(TransformerException exception) throws TransformerException {
//throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void fatalError(TransformerException exception) throws TransformerException {
//throw new UnsupportedOperationException("Not supported yet.");
}
}
當XML是良好的,我得到下面的輸出 - 正是我想要
<root>
<level1>WellFormed</level1>
</root>
如果與XML我得到下面的輸出問題 - 罰款,除了[致命錯誤]輸出
[Fatal Error] :1:39: XML document structures must start and end within the same entity.
My message: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 39; XML document structures must start and end within the same entity.
<root>
<level1>Not Well Formed</level1>
轉換函數會拋出一個異常,並將[致命錯誤]發送到stderr/stdout。有沒有辦法阻止[致命錯誤]日誌出現?
+1好問題 - 發佈一個完整的[MCVE](http://stackoverflow.com/help/mcve)讓我感興趣,足以想知道爲什麼它不起作用。 –