Index: trunk/src/org/openstreetmap/josm/data/osm/Changeset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Changeset.java	(revision 5995)
+++ trunk/src/org/openstreetmap/josm/data/osm/Changeset.java	(revision 5996)
@@ -48,6 +48,5 @@
      */
     public Changeset() {
-        this.id = 0;
-        this.tags = new HashMap<String, String>();
+        this(0);
     }
 
Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 5995)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 5996)
@@ -320,8 +320,12 @@
 
     private void parseChangeset(Long uploadChangesetId) throws XMLStreamException {
-        long id = getLong("id");
-
-        if (id == uploadChangesetId) {
-            uploadChangeset = new Changeset((int) getLong("id"));
+
+        Long id = null;
+        if (parser.getAttributeValue(null, "id") != null) {
+            id = getLong("id");
+        }
+        // Read changeset info if neither upload-changeset nor id are set, or if they are both set to the same value
+        if (id == uploadChangesetId || (id != null && id.equals(uploadChangesetId))) {
+            uploadChangeset = new Changeset(id != null ? id.intValue() : 0);
             while (true) {
                 int event = parser.next();
