Get full xml text from Node instance

I read the XML file in Java with this code:

File file = new File("file.xml"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(file); NodeList nodeLst = doc.getElementsByTagName("record"); for (int i = 0; i < nodeLst.getLength(); i++) { Node node = nodeLst.item(i); ... } 

So how can I get the full xml content from a node instance? (including all tags, attributes, etc.)

Thanks.

+8
java xml
source share
1 answer

Check out this other answer from stackoverflow.

You would use a DOMSource (instead of a StreamSource) and pass the node in the constructor.

Then you can convert node to string.

Quick example:

 public class NodeToString { public static void main(String[] args) throws TransformerException, ParserConfigurationException, SAXException, IOException { // just to get access to a Node String fakeXml = "<!-- Document comment -->\n <aaa>\n\n<bbb/> \n<ccc/></aaa>"; DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = docBuilder.parse(new InputSource(new StringReader(fakeXml))); Node node = doc.getDocumentElement(); // test the method System.out.println(node2String(node)); } static String node2String(Node node) throws TransformerFactoryConfigurationError, TransformerException { // you may prefer to use single instances of Transformer, and // StringWriter rather than create each time. That would be up to your // judgement and whether your app is single threaded etc StreamResult xmlOutput = new StreamResult(new StringWriter()); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); transformer.transform(new DOMSource(node), xmlOutput); return xmlOutput.getWriter().toString(); } } 
+13
source share

All Articles