hehe,
my bad I said Netbeans but I actually use Eclipse :P
Still used to J2ME with NetBeans thats why I mixed up...
Anyways, I do get the error (exception) which I already posted in one
of my first posts :
At line 40, column 23: not well-formed (invalid token)

"They *MUST* be valid printing Unicode
characters. No random control characters -- for example, ISO-8859-1
byte values 0-31 (decimal). This will ALWAYS fail -- it is NOT well-
formed XML. If that's the cause of your exceptions"
Well I did paste the error-generating xml entry which for example is :
<Country ID="2" CName="Åland eilanden"/>


"It would help
if you posted the URL to the XML "
Unfortunately I am not allowed to do so :( It's a URL which is
actually in use by our already exisiting software...

Also I noticed my previous post was posted three times ! My apologies
for that, I actually can't remember pushing the Send button three
times :P

On 3 feb, 19:02, Bob Kerns <r...@acm.org> wrote:
> Yeah, that's not what I mean by a test case.
>
> Seehttp://junit.orgas a starting point.
> (The Android SDK includes some limited version of JUnit I don't
> recognize. It's adequate for this purpose, but the full, modern
> version is better. For non-device testing, you're not restricted to
> the supplied one.)
>
> Basically, a test case is code that you can run to *automatically*
> test some specific aspect of a system. In this case, checking against
> a known set of XML (so it doesn't change), looking for the known
> desired result, and reporting failures (expected conditions not
> matching) and errors (unexpected exceptions thrown).
>
> This removes the variables from the equation. You're not depending on
> how things display, either in the UI nor in the log stream and
> windows. You're not dependent on a human to notice a problem.
>
> An best of all, you can automate it to always run when you build, so
> if you break later, you'll find out right away, while you know what
> you changed. And you can make changes freely, with the security of
> knowing that you won't have to go through some long test/debug cycle.
>
> I didn't answer your question about getting a stacktrace earlier,
> because you said "NetBeans". I'm old enough to remember when NetBeans
> was the hot new thing -- but too old to remember how to do anything
> with it. Try using Eclipse and the ADK. It will show you the stack
> trace in the same way it shows any other stack trace, as if you were
> debugging locally. (I would expect NetBeans to, as well).
>
> Or you can catch the exception, and use exception.printStackTrace() to
> get it into the log (I'm surprised it's not already there).
>
> This isn't really an Android problem, and it's not necessary to debug
> it there. If you write your failing test cases, you can debug them on
> your desktop computer, get them working, and you should be set to go
> on the device.
>
> Another thing to realize is that not all character values you can come
> up with, are legal XML content. They *MUST* be valid printing Unicode
> characters. No random control characters -- for example, ISO-8859-1
> byte values 0-31 (decimal). This will ALWAYS fail -- it is NOT well-
> formed XML. If that's the cause of your exceptions, your two choices
> would be to fix it on the server (probably by encoding this binary
> data) or to preprocess the fake-XML into real XML before you feed it
> to the XML parser.
>
> \
> On Feb 3, 6:49 am, MobDev <developm...@mobilaria.com> wrote:
>
> > well to begin with : thx for the expalanation :D
> > I was wondering about your statement :
> > "Try logging to a file. Or better yet, create test cases, and verify
> > the correct operation of your code via test suite, rather than via log
> > statements. "
> > I already tried in a test case, which was to write the incoming data
> > to a AlertDialog, but the result was that those characters are shwon
> > on-screen with a rectangle with a ? in it... My idea (and test case)
> > would be to "stream" a list of countries, and afterwards show this
> > list onscreen so the user can select one...
> > Our problem is that the whole system I am using is based on the ISO
> > norm and cannot be changed to UTF-8 in a short period of time...
> > Or am I misinterpreting your "test cases" and "test suite" ? And if so
> > how should it have been interpreted ?
>
> > On 3 feb, 13:26, Bob Kerns <r...@acm.org> wrote:
>
> > > Well, you found one way to get the encoding in there. A few more:
>
> > > InputSource.setEncoding("iso-8859-1")
> > > new InputStreamReader(stream, "iso-8859-1");
>
> > > I'd argue that it should have gotten it from the ?<xml...
> > > encoding="iso-8859-1"?> -- I'm a bit surprised it didn't. But it's
> > > something I'd never rely on if I know the encoding.
>
> > > Anyway, re: your problem below. It's probably working right, up to the
> > > point of the log statement.
>
> > > The log stream is probably taking those bytes, and then later they're
> > > being interpreted as UTF-8. or it's taking the characters from the
> > > string, and interpreting them as UTF-8 (via String.getBytes()) and
> > > passing them off to a log stream that doesn't know about UTF-8.
>
> > > Try logging to a file. Or better yet, create test cases, and verify
> > > the correct operation of your code via test suite, rather than via log
> > > statements.
>
> > > But if you have any control or influence over the server -- fix the
> > > problem there. ISO-8859-* should be of purely historical interest in
> > > interpreting old documents. The first draft of ISO-10646 came out
> > > nearly 20 years ago, and UTF-8 has been around for nearly 18 years.
> > > The world is international. It's time to put a stake in the heart of
> > > these national encodings.
>
> > > On Feb 3, 2:55 am, MobDev <developm...@mobilaria.com> wrote:
>
> > > > Btw I also have tried this instead :
>
> > > >  try {
> > > >                 URL url = new URL("http://www.myserver.com/xmlstream";);
> > > >                 URLConnection conn = url.openConnection();
> > > >             InputStream is = conn.getInputStream();
> > > >             Xml.parse(is, Xml.Encoding.ISO_8859_1, new ExampleHandler
> > > > ());
> > > >         } catch (Exception e)
> > > >         {
> > > >             throw new RuntimeException(e);
> > > >         }
>
> > > > This time it wont just crash but for example if I print the output
> > > > (through Log) I get
>
> > > > Found attribute : Ã…land eilanden
> > > > and
> > > > Found attribute : Albanië instead of Albanié
>
> > > > So any input on this ?
>
> > > > On 3 feb, 10:44, MobDev <developm...@mobilaria.com> wrote:
>
> > > > > Actually this is the code for the second approach :
>
> > > > > /* Create a URL we want to load some xml-data from. */
> > > > > URL url = new URL("http://www.myserver.com/xmlstream";);
>
> > > > > /* Get a SAXParser from the SAXPArserFactory. */
> > > > > SAXParserFactory spf = SAXParserFactory.newInstance();
> > > > > SAXParser sp = spf.newSAXParser();
>
> > > > >  /* Get the XMLReader of the SAXParser we created. */
> > > > > XMLReader xr = sp.getXMLReader();
> > > > >  /* Create a new ContentHandler and apply it to the XML-Reader*/
> > > > > ExampleHandler myExampleHandler = new ExampleHandler();
> > > > > xr.setContentHandler(myExampleHandler);
>
> > > > > /* Parse the xml-data from our URL. */
> > > > > xr.parse(new InputSource(url.openStream()));
> > > > > /* Parsing has finished. */
>
> > > > > And the error I get is :
> > > > > At line 40, column 23: not well-formed (invalid token)
>
> > > > > which is around this XML line :
> > > > > <Country ID="2" CName="Åland eilanden"/>
>
> > > > > So where should I specifiy its an ISO-8859-1 ?
> > > > > Also I have been debugging the app, but I actually cannot see the
> > > > > stacktrace, could you please direct me on how to show it on NetBeans ?
> > > > > Every time I try to look at the exception thrown I will see several
> > > > > variables but StackTrace will be null...
>
> > > > > On 3 feb, 06:17, Bob Kerns <r...@acm.org> wrote:
>
> > > > > > While I would expect your second approach to work, it's important to
> > > > > > note that IT IS NOT REQUIRED TO WORK.
>
> > > > > > The XML standard does not require XML processors to support anything
> > > > > > other than UTF-8 or UTF-16.
>
> > > > > > In this day and age, I would STRONGLY discourage use of anything 
> > > > > > other
> > > > > > than UTF-8, or, rarely, UTF-16.
>
> > > > > > Another factor to consider is how you're getting access to those
> > > > > > characters. You must do this one of two ways:
>
> > > > > > 1) Using a Reader set to read 8859-1
> > > > > > -or-
> > > > > > 2) Using an input stream, giving the raw bytes to the parser, 
> > > > > > letting
> > > > > > it decode the 8859-1 characters.
>
> > > > > > You WILL FAIL (and this is probably your problem, would be my guess)
> > > > > > if you try to read using a Reader that's expecting UTF-8.
>
> > > > > > A stacktrace should show which problem you have.
>
> > > > > > On Feb 2, 6:42 am, MobDev <developm...@mobilaria.com> wrote:
>
> > > > > > > Hi,
> > > > > > > I am downloading a xml-type file from a webserver which starts out
> > > > > > > with :
>
> > > > > > > <?xml version="1.0" encoding="iso-8859-1" ?>
>
> > > > > > > afterwards I get a list with loads of countries, some countries do
> > > > > > > contain some letters like é and á.
>
> > > > > > > I have tried to extract the data of the xml in two ways :
> > > > > > > 1 - simply download the whole thing into a String, which will 
> > > > > > > result
> > > > > > > in those characters being seen as something like [] or on the 
> > > > > > > Android
> > > > > > > emulator (and device) I will see a triangle with a ? in it...
>
> > > > > > > 2 - fetch the list with the SAXParser and XMLReader which will 
> > > > > > > just
> > > > > > > throw an exception telling me that there is some content error...
> > > > > > > specifically at the line where the first country is with such a
> > > > > > > character...
>
> > > > > > > So is there some way to get this to work ? Can I read the 
> > > > > > > iso-8859-1
> > > > > > > encoded xml into the Parser ? Or is there some way to 
> > > > > > > encode/decode
> > > > > > > the received data into something actually usable ?
> > > > > > > Any idea where the problem might be ?
>
> > > > > > > Thanks in advance for any hints, tips, code or explanation :D

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to