Description
Executes an identity transform.
License
Apache License
Parameter
Parameter | Description |
---|
xml | the xml |
Exception
Parameter | Description |
---|
TransformerException | if an exception occurs |
Declaration
public static String identity(String xml) throws TransformerException
Method Source Code
//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.//w w w .j ava2 s.co m
*/
import java.io.StringReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
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\"?>";
/**
* Executes an identity transform.
* @param xml the xml
* @throws TransformerException if an exception occurs
*/
public static String identity(String xml) throws TransformerException {
xml = removeBOM(xml);
if (xml != null)
xml = xml.trim();
if ((xml == null) || (xml.length() == 0)) {
throw new TransformerException("Empty XML.");
}
StringWriter result = new StringWriter();
transform(new StreamSource(new StringReader(xml)), new StreamResult(result), false);
return checkResult(result, false);
}
/**
* Removes a windows byte order mark if present.
* @param s the string to check
* @return the string absent the byte order mark
*/
public static String removeBOM(String s) {
if (s != null) {
byte[] bom = new byte[3];
bom[0] = (byte) 0xEF;
bom[1] = (byte) 0xBB;
bom[2] = (byte) 0xBF;
try {
String sbom = new String(bom, "UTF-8");
s = s.trim();
if (s.startsWith(sbom)) {
s = s.substring(1).trim();
}
} catch (UnsupportedEncodingException e) {
}
}
return s;
}
/**
* 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;
}
}
Related
- getString(Node node, boolean indent)
- getStringFromStreamSource(StreamSource src)
- getTemplates(String name)
- getValidator(String path)
- getXmlStringFromSource(Source payload)
- indentXML(String fileContent)
- loadSourceFromURL(String systemID)
- mergeXml(String... xmlSources)
- normXML(String s)