Ignore:
Timestamp:
2018-06-20T19:25:48+02:00 (7 years ago)
Author:
donvip
Message:

fix #josm16402 - Cannot read kml with complex ExtendedData section

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmlReader.java

    r34089 r34331  
    3030import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
    3131import org.openstreetmap.josm.plugins.opendata.core.io.ProjectionPatterns;
     32import org.openstreetmap.josm.tools.Logging;
    3233import org.openstreetmap.josm.tools.date.DateUtils;
    3334
     
    5051    public static final String KML_EXT_TRACK = "Track";
    5152    public static final String KML_EXT_COORD = "coord";
     53    public static final String KML_EXT_LANG = "lang";
    5254    // CHECKSTYLE.ON: SingleSpaceSeparator
    5355
     
    104106        Relation relation = null;
    105107        String role = "";
     108        String previousName = null;
    106109        Map<String, String> tags = new HashMap<>();
    107110        while (parser.hasNext()) {
     
    115118                    }
    116119                } else if (parser.getLocalName().equals(KML_NAME)) {
    117                     tags.put(KML_NAME, parser.getElementText());
     120                    try {
     121                        tags.put(KML_NAME, parser.getElementText());
     122                    } catch (XMLStreamException e) {
     123                        Logging.trace(e);
     124                    }
    118125                } else if (parser.getLocalName().equals(KML_SIMPLE_DATA)) {
    119126                    String key = parser.getAttributeValue(null, "name");
     
    151158                } else if (parser.getLocalName().equals(KML_WHEN)) {
    152159                    when = DateUtils.tsFromString(parser.getElementText().trim());
    153                 }
     160                } else if (parser.getLocalName().equals(KML_EXT_LANG)) {
     161                    if (KML_NAME.equals(previousName)) {
     162                        tags.put(KML_NAME, parser.getElementText());
     163                    }
     164                }
     165                previousName = parser.getLocalName();
    154166            } else if (event == XMLStreamConstants.END_ELEMENT) {
    155167                if (parser.getLocalName().equals(KML_PLACEMARK)) {
     
    158170                    list.add(node);
    159171                } else if (parser.getLocalName().equals(KML_LINE_STRING)
    160                         || parser.getLocalName().equals(KML_EXT_TRACK) 
     172                        || parser.getLocalName().equals(KML_EXT_TRACK)
    161173                        || parser.getLocalName().equals(KML_LINEAR_RING)) {
    162174                    if (way != null && wayNodes != null)
Note: See TracChangeset for help on using the changeset viewer.