将org.w3c.dom.Node转换为String

对不起,我是一个Java / XML新手 – 似乎无法想出这个。 似乎可以将Document对象转换为字符串。 但是,我想将Node对象转换为字符串。 我正在使用org.ccil.cowan.tagsoup Parser。

我正在通过类似的方式检索节点…

parser = new org.ccil.cowan.tagsoup.Parser() parser.setFeature(namespaceaware, false) Transformer transformer = TransformerFactory.newInstance().newTransformer(); DOMResult domResult = new DOMResult(); transformer.transform(new SAXSource(parser, new InputSource(in)), domResult); Node n = domResult.getNode(); // I'm interested in the first child, so... Node myNode = n.getChildNodes().item(0); // convert myNode to string.. // what to do here? 

答案可能很明显,但我似乎无法从核心Java库中弄清楚如何实现这一目标。 任何帮助深表感谢!

您可以使用Transformer (为清晰起见,省略了error handling和可选的工厂配置):

 Node node = ...; StringWriter writer = new StringWriter(); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.transform(new DOMSource(node), new StreamResult(writer)); String xml = writer.toString(); // Use xml ... 
 String getNodeString(Node node) { try { StringWriter writer = new StringWriter(); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.transform(new DOMSource(node), new StreamResult(writer)); String output = writer.toString(); return output.substring(output.indexOf("?>") + 2);//remove  } catch (TransformerException e) { e.printStackTrace(); } return node.getTextContent(); }