XML special characters

6 vues (au cours des 30 derniers jours)
Joan Puig
Joan Puig le 16 Sep 2011
Hi,
I have some code that generates an xml string. For some reason, when I try to use special characters the xmlread function is not able to read it back in:
clear();
clc();
docFactory = javax.xml.parsers.DocumentBuilderFactory.newInstance();
docBuilder = docFactory.newDocumentBuilder();
doc = docBuilder.newDocument();
stuff = doc.createElement('stuff');
stuff.setAttribute('value','ó'); % If a regular character is used, it works fine
doc.appendChild(stuff);
factory = javax.xml.transform.TransformerFactory.newInstance();
transformer = factory.newTransformer();
writer = java.io.StringWriter();
result = javax.xml.transform.stream.StreamResult(writer);
source = javax.xml.transform.dom.DOMSource(doc);
transformer.transform(source, result);
writer.close();
xml = char(writer.toString())
jString = java.lang.String(xml);
readOut = xmlread(java.io.ByteArrayInputStream(jString.getBytes()));
This is the xml string that gets generated:
xml =
<?xml version="1.0" encoding="utf-8"?><stuff value="ó"/>
This is the error it gives me:
[Fatal Error] :1:53: Invalid byte 2 of 4-byte UTF-8 sequence.
??? Java exception occurred:
org.xml.sax.SAXParseException: Invalid byte 2 of 4-byte UTF-8 sequence.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
Error in ==> xmlread at 98
parseResult = p.parse(fileName);
Error in ==> scr_xml_encoding at 20
readOut = xmlread(java.io.ByteArrayInputStream(jString.getBytes()));
>>
Do you have any idea of how to fix it?
Thanks, Joan

Réponses (2)

Walter Roberson
Walter Roberson le 16 Sep 2011
You will probably have to use native2unicode() to build the value to set() as the attribute. In MATLAB, 'ó' is just a 16 bit value, spanning the first 65536 unicode code points; you need to do a UTF-8 encoding of it.
  1 commentaire
Joan Puig
Joan Puig le 17 Sep 2011
Hi Walter,
Thanks for your answer. I looks like native2unicode() could be used to get the expected results, but I have tried a few combinations and was not able to get it working. Could you please be a little bit more specific?
Thanks,
Joan

Connectez-vous pour commenter.


Silvia Muñoz Polo
Silvia Muñoz Polo le 11 Sep 2013
Hi, I have the same problem. The native2unicode() function works at Matlab environment but the generated xml file can't be edited. Any idea to solve this problem? Thanks.

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by