Java tutorial
//package com.java2s; /* See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * Esri Inc. licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.io.StringWriter; import javax.xml.XMLConstants; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; public class Main { /** DEFAULT_ENCODING = "UTF-8" */ public static final String DEFAULT_ENCODING = "UTF-8"; /** DEFAULT_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" */ public static final String DEFAULT_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; /** * Reads a file. * @param systemId the system id * @return the content * @throws Exception if an exception occurs */ public static String readFile(String systemId) throws Exception { /* String s = new String(Files.readAllBytes(Paths.get(path)),"UTF-8"); if (s != null) s = s.trim(); return s; */ StringWriter result = new StringWriter(); transform(new StreamSource(systemId), new StreamResult(result), true); return checkResult(result, true); } /** * Executes a transformation. * <br>The output encoding is set to UTF-8 * @param source the transformation source * @param result the transformation result * @param indent if true, the output indent key is set to "yes" * @throws TransformerException if an exception occurs */ public static void transform(javax.xml.transform.Source source, javax.xml.transform.Result result, boolean indent) throws TransformerException { TransformerFactory factory = TransformerFactory.newInstance(); factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); factory.setFeature("http://javax.xml.XMLConstants/feature/secure-processing", true); //factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl",true); Transformer transformer = factory.newTransformer(); transformer.setOutputProperty(OutputKeys.ENCODING, DEFAULT_ENCODING); transformer.setOutputProperty(OutputKeys.METHOD, "xml"); if (indent) { transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); } transformer.transform(source, result); } /** * Check a result. * @param result the result * @return the string (trimmed, null if empty) */ public static String checkResult(StringWriter result, boolean checkIndent) { String s = result.toString(); if (s != null) { s = s.trim(); if (checkIndent) { if (s.startsWith(DEFAULT_HEADER + "<")) { s = s.replace(DEFAULT_HEADER, DEFAULT_HEADER + "\r\n"); } } if (s.length() == 0) s = null; } ; return s; } }