Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.help > #2477

[Update] XMLEventWriter and numeric character references

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>

Show all headers | View raw


 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 | NextPrevious in thread | Find similar | Unroll thread


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