Index: branch/0.5/src/org/openstreetmap/josm/io/RawGpsReader.java
===================================================================
--- branch/0.5/src/org/openstreetmap/josm/io/RawGpsReader.java	(revision 335)
+++ branch/0.5/src/org/openstreetmap/josm/io/RawGpsReader.java	(revision 336)
@@ -94,5 +94,21 @@
 				}
 				tags.push(tag);
-			}
+			} else if (peek.equals("text")) {
+                            String tag = tags.pop();
+                            if (tags.empty() || !tags.peek().equals("link")) {
+                                tags.push(tag);
+                                return;
+                            }
+                            String contents = new String(ch, start, length);
+                            // we just want the contents of <link><text></text></link> to
+                            // all be stored under link.
+                            String oldContents = currentTagValues.get("link");
+                            if (oldContents == null) {
+                                currentTagValues.put("link", contents);
+                            } else {
+                                currentTagValues.put("link", oldContents + contents);
+                            }
+                            tags.push(tag);
+                        }
 		}
 
@@ -109,5 +125,14 @@
 				newTrack();
 				currentTagValues.clear();
-			}
+			} else if (qName.equals("link")) {
+                            String contents = currentTagValues.get(qName);
+                            if (contents != null) {
+                                // strip off leading and trailing whitespace
+                                currentTagValues.put(qName,
+                                                     contents
+                                                      .replaceFirst("^\\s+", "")
+                                                      .replaceFirst("\\s+$", ""));
+                            }
+                        }
 			tags.pop();
 		}
