Converting an XML Fragment into a DOM Fragment

This example demonstrates how to parse an XML string fragment into a set of nodes suitable for insertion into a DOM document.
// Parses a string containing XML and returns a DocumentFragment // containing the nodes of the parsed XML. public static DocumentFragment parseXml(Document doc, String fragment) { // Wrap the fragment in an arbitrary element fragment = "<fragment>"+fragment+"</fragment>"; try { // Create a DOM builder and parse the fragment DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); Document d = factory.newDocumentBuilder().parse( new InputSource(new StringReader(fragment))); // Import the nodes of the new document into doc so that they // will be compatible with doc Node node = doc.importNode(d.getDocumentElement(), true); // Create the document fragment node to hold the new nodes DocumentFragment docfrag = doc.createDocumentFragment(); // Move the nodes into the fragment while (node.hasChildNodes()) { docfrag.appendChild(node.removeChild(node.getFirstChild())); } // Return the fragment return docfrag; } catch (SAXException e) { // A parsing error occurred; the xml input is not valid } catch (ParserConfigurationException e) { } catch (IOException e) { } return null; }
Here's an example that uses the method:
// Obtain an XML document; this method is implemented in // The Quintessential Program to Create a DOM Document from an XML File Document doc = parseXmlFile("infilename.xml", false); // Create a fragment DocumentFragment frag = parseXml(doc, "hello <b>joe</b>"); // Append the new fragment to the end of the root element Element element = doc.getDocumentElement(); element.appendChild(frag);

Post a comment

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image. Ignore spaces and be careful about upper and lower case.