Below Code Well form, Organize or Indent plain or unorganized XML String using XML API in JDK 6.
IndentXML.java
Plain XML output will be like:
Well formed/Organized/Indented XML output will like:
IndentXML.java
import com.actl.dxchange.utilities.XMLUtil;
import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.w3c.dom.*;
/**
* XMLTransformations Utilities.
* @author Tejas Purohit
*/
public class IndentXML {
public IndentXML() {
}
public static void main(String[] args) throws Exception {
IndentXML t = new IndentXML();
String strXML = "<Employees><Employee Name='Amitabh Bachapan' Designation='Director'>"+
"<Address><AddressLine>Opp. Taj Square</AddressLine><City>Mumbai</City>"+
"<Country>India</Country></Address></Employee><Employee Name='Shah RukRukKhan'"+
" Designation='Manager'><Address><AddressLine>Behind Chandani Choak</AddressLine>"+
"<City>Delhi</City><Country>India</Country></Address></Employee></Employees>";
System.out.println("Plain XML:");
System.out.println(strXML); // Print Plain XML
strXML = t.indentXML(strXML); // Indent XML
System.out.println("Organized XML:"); // Print Organized/Indented XML
System.out.println(strXML);
}
/**
* Indent given XML String and returns organized String.
* @param strXML Plain XML String
* @return Organized or indented String
*/
public String indentXML(String strXML) {
String result = null;
try {
// Creating StreamSource from given plain XML String
ByteArrayInputStream bin = new ByteArrayInputStream(strXML.getBytes());
StreamSource streamSource = new StreamSource(bin);
streamSource.setSystemId("http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd");
// Creating new Transformer
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
// Setting output properties
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "5");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd");
transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "-//W3C//DTD XHTML 1.1//EN");
// Creating StreamResult
ByteArrayOutputStream bout = new ByteArrayOutputStream();
StreamResult streamResult = new StreamResult(bout);
streamResult.setSystemId("http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd");
// Transforming StreamSource and storing result in StreamResult
transformer.transform(streamSource, streamResult);
// Getting String from ByteArrayOutputStream
result = bout.toString();
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
}Plain XML output will be like:
<Employees><Employee Name='Amitabh Bachapan' Designation='Director'><Address><AddressLine>Opp. Taj Square</AddressLine><City>Mumbai</City><Country>India</Country></Address></Employee><Employee Name='Shah RukRukKhan' Designation='Manager'><Address><AddressLine>Behind Chandani Choak</AddressLine><City>Delhi</City><Country>India</Country></Address></Employee></Employees>
Well formed/Organized/Indented XML output will like:
<!DOCTYPE Employees PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <Employees> <Employee Name="Amitabh Bachapan" Designation="Director"> <Address> <AddressLine>Opp. Taj Square</AddressLine> <City>Mumbai</City> <Country>India</Country> </Address> </Employee> <Employee Name="Shah RukRukKhan" Designation="Manager"> <Address> <AddressLine>Behind Chandani Choak</AddressLine> <City>Delhi</City> <Country>India</Country> </Address> </Employee> </Employees>
Comments
Post a Comment
Is this content helpful? Leave appreciation, feedback, suggestions, issues anything.