Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.help > #2477
| From | Jeff Higgins <jeff@invalid.invalid> |
|---|---|
| Newsgroups | comp.lang.java.help |
| Subject | [Update] XMLEventWriter and numeric character references |
| Date | 2013-02-05 20:52 -0500 |
| Organization | A noiseless patient Spider |
| Message-ID | <kesc6c$7qv$1@dont-email.me> (permalink) |
| References | <keqget$g1q$1@dont-email.me> |
From XMLStreamWriterImpl:
for (int index = 0; index < end; index++) {
char ch = content.charAt(index);
if (fEncoder != null && !fEncoder.canEncode(ch)){
fWriter.write(content, startWritePos, index - startWritePos );
// Escape this char as underlying encoder cannot handle it
fWriter.write( "&#x" );
fWriter.write(Integer.toHexString(ch));
fWriter.write( ';' );
startWritePos = index + 1;
continue;
}
So yeah, short of a custom XMLStreamWriter
I can add a clause to my processor:
while (eventReader.hasNext()) {
XMLEvent e = eventReader.nextEvent();
if (e.isCharacters() && e.asCharacters().getData().length() == 2) {
if (Character.isHighSurrogate(e.asCharacters().getData().charAt(0))
&&
Character.isLowSurrogate(e.asCharacters().getData().charAt(1))) {
int cp = Character.toCodePoint(e.asCharacters().getData().charAt(0),
e.asCharacters().getData().charAt(1));
eventWriter.add(eventFactory.createEntityReference("#x"
+ Integer.toHexString(cp).toUpperCase(), null));
} else
eventWriter.add(e);
} else
eventWriter.add(e);
}
Back to comp.lang.java.help | Previous | Next — Previous in thread | Find similar | Unroll thread
XMLEventWriter and numeric character references Jeff Higgins <jeff@invalid.invalid> - 2013-02-05 03:52 -0500 [Update] XMLEventWriter and numeric character references Jeff Higgins <jeff@invalid.invalid> - 2013-02-05 20:52 -0500
csiph-web