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


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

[Update] XMLEventWriter and numeric character references

Path csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail
From Jeff Higgins <jeff@invalid.invalid>
Newsgroups comp.lang.java.help
Subject [Update] XMLEventWriter and numeric character references
Date Tue, 05 Feb 2013 20:52:31 -0500
Organization A noiseless patient Spider
Lines 34
Message-ID <kesc6c$7qv$1@dont-email.me> (permalink)
References <keqget$g1q$1@dont-email.me>
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
Injection-Date Wed, 6 Feb 2013 01:38:21 +0000 (UTC)
Injection-Info mx05.eternal-september.org; posting-host="6b9e92482af47766954d85fb77d372f5"; logging-data="8031"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18BuWt8IDBewmGXoOiGsbQ881ydUmIsNsE="
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20121216 Icedove/3.0.11
In-Reply-To <keqget$g1q$1@dont-email.me>
Cancel-Lock sha1:gFDnj9z4VIW1xd+nY5q2PBl9iIc=
Xref csiph.com comp.lang.java.help:2477

Show key headers only | 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