[XML, DOM] How can I escape apostrophe in attribute value?
I use Xerces2 Java Parser(2.9).
How can I escape apostrophe in attribute value?
My results:
STRXML = <?xml version="1.0" encoding="UTF-8"?><State name="'"/>
<?xml version="1.0" encoding="UTF-8"?><State name="'"/>javax.xml.transform.stream.StreamResult@1f33675
Expected results:
STRXML = <?xml version="1.0" encoding="UTF-8"?><State name="'"/>
<?xml version="1.0" encoding="UTF-8"?><State name="'"/>javax.xml.transform.stream.StreamResult@1f33675
or
STRXML = <?xml version="1.0" encoding="UTF-8"?><State name="'"/>
<?xml version="1.0" encoding="UTF-8"?><State name="'"/>javax.xml.transform.stream.StreamResult@1f33675
When I replace � to ' result '
Here my test for example.
import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSException;
import org.w3c.dom.ls.LSOutput;
import org.w3c.dom.ls.LSSerializer;
public class MTest {
public static void main(String args[]) {
try {
StreamResult result;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();
Element newNodeState = doc.createElement("State");
//stateLbl=stateLbl.replaceAll("[\']", """);
String stateLbl = "'";//How to escape this apostrophe to ' or '
newNodeState.setAttribute("name", stateLbl);
doc.appendChild(newNodeState);
result = new StreamResult(System.out);
DOMSource source = new DOMSource(doc);
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMImplementationRegistry registry = DOMImplementationRegistry
.newInstance();
DOMImplementationLS domImplLS = (DOMImplementationLS) registry
.getDOMImplementation("LS");
LSSerializer ser = domImplLS.createLSSerializer(); // Create a serializer for the DOM
LSOutput out = domImplLS.createLSOutput();
StringWriter stringOut = new StringWriter(); // Writer will be a String
out.setCharacterStream(stringOut);
ser.write(newNodeState, out); // Serialize the DOM
System.out.println("STRXML = " + stringOut.toString());
transformer.transform(source, result);
System.out.print(result);
} catch (DOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassCastException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (LSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerFactoryConfigurationError e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Best Regards