Кастинг отличается от преобразования в Java, чтобы использовать неформальную терминологию.
Кастинг объекта означает, что объект уже является тем, на который вы его набрасываете, и вы просто рассказываете компилятору об этом. Например, если у меня есть ссылка Foo
, которую я знаю, это экземпляр FooSubclass
, тогда (FooSubclass)Foo
сообщает компилятору: «Не изменяйте экземпляр, просто знайте, что это на самом деле FooSubclass
.
С другой стороны, Integer
является not a String
, хотя (как вы указываете) существуют методы получения String
, который представляет Integer
. Поскольку ни один экземпляр Integer
не может быть String
, вы не можете использовать Integer
в String
.
Вызов 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
является необязательным и может не работать с вашей конкретной конфигурацией)
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 + " ");
}
, если вы используете dom4j, это будет dom4JDOM.asString ()
Попробуйте jcabi-xml с одним лайнером:
String xml = new XMLDocument(document).toString();
Это необходимая вам зависимость:
<dependency>
<groupId>com.jcabi</groupId>
<artifactId>jcabi-xml</artifactId>
<version>0.14</version>
</dependency>