как разбирать java-файл журнала xml с помощью logger.dtd [duplicate]

Кастинг отличается от преобразования в Java, чтобы использовать неформальную терминологию.

Кастинг объекта означает, что объект уже является тем, на который вы его набрасываете, и вы просто рассказываете компилятору об этом. Например, если у меня есть ссылка Foo, которую я знаю, это экземпляр FooSubclass, тогда (FooSubclass)Foo сообщает компилятору: «Не изменяйте экземпляр, просто знайте, что это на самом деле FooSubclass.

С другой стороны, Integer является not a String, хотя (как вы указываете) существуют методы получения String, который представляет Integer. Поскольку ни один экземпляр Integer не может быть String, вы не можете использовать Integer в String.

83
задан DwB 3 June 2016 в 14:10
поделиться

6 ответов

Вызов printDocument(doc, System.out), где этот метод выглядит следующим образом:

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")));
}

(indent-amount является необязательным и может не работать с вашей конкретной конфигурацией)

164
ответ дан Marco Lackovic 15 August 2018 в 16:06
поделиться
  • 1
    Разве это не иронично, что это «самый легкий». способ просто распечатать документ XML в Java? – Thomas 7 January 2011 в 14:37
  • 2
    с другой стороны, у вас много контроля;) – Bozho 7 January 2011 в 16:29
  • 3
    Brilliant! И да, это немного много текста, но ясно, какие выбранные параметры и Eclipse / Netbeans действительно помогут вам написать это. Покажите мне меньшую версию, и я расскажу вам, что она не может сделать. Хуже того, я расскажу вам, где вам нужно 3 раунда отладки, чтобы все было правильно ... – Peter Kriens 11 March 2013 в 14:52
  • 4
    Я клянусь богу Java .. заставьте меня написать смешное количество строк кода для чего-то, что можно сделать одним или двумя на других языках ... с полным контролем тоже .. – l46kok 16 June 2013 в 16:54
  • 5
    а не другие языки, но другие SDK – Bozho 17 June 2013 в 12:38
12
ответ дан informatik01 15 August 2018 в 16:06
поделиться
1
ответ дан Mark 15 August 2018 в 16:06
поделиться
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 + "   ");
}
3
ответ дан Robert Harvey 15 August 2018 в 16:06
поделиться
  • 1
    Я ценю, что Q задает кратчайший, но (в интересах кого-либо еще), возможно, вы могли бы разработать свой ответ, чтобы объяснить, что происходит? – Andrew 26 October 2012 в 06:29

, если вы используете dom4j, это будет dom4JDOM.asString ()

-1
ответ дан Rockoder 15 August 2018 в 16:06
поделиться

Попробуйте jcabi-xml с одним лайнером:

String xml = new XMLDocument(document).toString();

Это необходимая вам зависимость:

<dependency>
  <groupId>com.jcabi</groupId>
  <artifactId>jcabi-xml</artifactId>
  <version>0.14</version>
</dependency>
9
ответ дан yegor256 15 August 2018 в 16:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: