Was ist der einfachste Weg, um schön zu drucken (a.k.a. formatiert) a org.w3c.dom.Document
zu stdout?Was ist der kürzeste Weg, um ein org.w3c.dom.Document ordentlich auszudrucken?
Antwort
Anruf printDocument(doc, System.out)
, wo das Verfahren wie folgt aussieht:
public static void printDocument(Document doc, OutputStream out) throws IOException, TransformerException {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
transformer.transform(new DOMSource(doc),
new StreamResult(new OutputStreamWriter(out, "UTF-8")));
}
(Die indent-amount
ist optional und möglicherweise nicht mit Ihrer speziellen Konfiguration)
Wie wäre:
OutputFormat format = new OutputFormat(doc);
format.setIndenting(true);
XMLSerializer serializer = new XMLSerializer(System.out, format);
serializer.serialize(doc);
Während einfacher, erfordert dieser Ansatz Xerces – Pace
private void printNode(Node rootNode, String spacer) {
System.out.println(spacer + rootNode.getNodeName() + " -> " + rootNode.getNodeValue());
NodeList nl = rootNode.getChildNodes();
for (int i = 0; i < nl.getLength(); i++)
printNode(nl.item(i), spacer + " ");
}
Ich schätze, dass die Q fragt nach dem kürzesten, aber (für den Nutzen von jemand anderem) vielleicht könnten Sie Ihre Antwort zu erarbeiten erklären, was vor sich geht? – Andrew
Versuchen Sie jcabi-xml mit einem Liner:
String xml = new XMLDocument(document).toString();
Dies ist die Abhängigkeit Sie brauchen:
<dependency>
<groupId>com.jcabi</groupId>
<artifactId>jcabi-xml</artifactId>
<version>0.14</version>
</dependency>
Dies wird eine schön formatierte Ausgabe zurückkehren durch rekursive Abstieg/Aufstieg mit.
private static boolean skipNL;
private static String printXML(Node rootNode) {
String tab = "";
skipNL = false;
return(printXML(rootNode, tab));
}
private static String printXML(Node rootNode, String tab) {
String print = "";
if(rootNode.getNodeType()==Node.ELEMENT_NODE) {
print += "\n"+tab+"<"+rootNode.getNodeName()+">";
}
NodeList nl = rootNode.getChildNodes();
if(nl.getLength()>0) {
for (int i = 0; i < nl.getLength(); i++) {
print += printXML(nl.item(i), tab+" "); // \t
}
} else {
if(rootNode.getNodeValue()!=null) {
print = rootNode.getNodeValue();
}
skipNL = true;
}
if(rootNode.getNodeType()==Node.ELEMENT_NODE) {
if(!skipNL) {
print += "\n"+tab;
}
skipNL = false;
print += "</"+rootNode.getNodeName()+">";
}
return(print);
}
Dies ist sehr unvollständig. – Andrew
wenn Sie dom4j verwenden, wäre es dom4JDOM.asString sein()
- 1. was ist der kürzeste Hash/
- 2. Der kürzeste Weg, um ein Array mit weniger Elementen zurückzugeben
- 3. Der beste kürzeste Weg Algorithmus
- 4. Was ist der kürzeste Weg, um eine Proxy oder Decorator-Klasse in C# zu implementieren?
- 5. Was ist der beste/kürzeste Weg, um einen Iterable zu einem Stream in Dart zu konvertieren?
- 6. Was ist der kürzeste Weg, um eine Variable vom Typ Short in Scala zu inkrementieren?
- 7. Was ist der kürzeste Weg, um eine Java-Klasse zu schreiben, um ein einfaches JSON-Dokument mit Deserialisierung darzustellen?
- 8. Was ist der kürzeste Weg, um unveränderliche Objekte mit Spread-und Destrukturierung Operatoren zu ändern
- 9. Was ist der kürzeste Weg, um eine zufällige IP-Adresse in Ruby zu generieren?
- 10. Was ist der kürzeste Weg, um die letzten N Elemente eines Arrays zu erhalten?
- 11. Was ist der kürzeste Weg, um diese Grenze css Eigenschaften zu schreiben?
- 12. Was ist der beste Weg, um ein Zählerfeld in MySQL
- 13. Was ist der beste Weg, um ein Verzeichnis zu leeren?
- 14. Was ist der beste Weg, um ein "Passwort vergessen?" Seite?
- 15. Was ist der effiziente Weg, um ein Berechtigungssystem zu machen?
- 16. Was ist der richtige Weg um umzuleiten?
- 17. Was ist der einfachste Weg, um SUMPRODUCT
- 18. Was ist die kürzeste Scala-Methode, um eine Map umzukehren?
- 19. der kürzeste Weg im Zyklus gerichtet Graph
- 20. Was ist der beste Weg, um einen Stream um
- 21. Was ist einfachste Weg, um ein Video in einem Media
- 22. Der kürzeste Weg, um ein Array in absteigender Reihenfolge in Swift
- 23. jQuery Box .val wählen (‚‘) Verhalten von 1,9 unterscheidet sich 1.10+, was der kürzeste Weg ist, dass
- 24. Was ist der effizienteste Weg, um den Quellcode der Webseite in C zu erhalten?
- 25. Was ist der beste Weg
- 26. Was ist der beste Weg, um jQuery .change()
- 27. Was ist der einfachste Weg, um einen leeren Iterable mit Ausbeute in Python zu erstellen?
- 28. Was ist der beste Weg, um mit OSGI zu beginnen?
- 29. Was ist der bevorzugte Weg, um Ereignisse zu blasen?
- 30. Was ist der einfachste Weg, um ERRORLEVEL auf Null zurückzusetzen?
Ist es nicht ironisch, dass das ist die „einfachste“ Art und Weise einfach ein XML-Dokument in Java drucken? – Thomas
auf der anderen Seite haben Sie viel Kontrolle;) – Bozho
Brilliant! Und ja, es ist ein bisschen viel Text, aber es ist kristallklar, was die ausgewählten Optionen sind und Eclipse/Netbeans helfen Ihnen wirklich dabei, dies zu schreiben. Zeig mir eine kleinere Version und ich sage dir was es nicht kann. Schlimmer noch, ich werde Ihnen sagen, wo Sie 3 Debugging-Runden brauchen, um es richtig zu machen ... –