Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

[XML, DOM] How can I escape apostrophe in attribute value?

843834Jan 8 2008 — edited Jan 12 2008
[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="&apos;"/>
<?xml version="1.0" encoding="UTF-8"?><State name="&apos;"/>javax.xml.transform.stream.StreamResult@1f33675
or
STRXML = <?xml version="1.0" encoding="UTF-8"?><State name="&#39;"/>
<?xml version="1.0" encoding="UTF-8"?><State name="&#39;"/>javax.xml.transform.stream.StreamResult@1f33675
When I replace � to &apos; result &apos;
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("[\']", "&#34;");
			String stateLbl = "'";//How to escape this apostrophe to &#39; or &apos;
			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
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 9 2008
Added on Jan 8 2008
4 comments
1,317 views