Comments (4)
Okay, I've encountered this again in the wild, and have a plan. Basically the options are:
- Remove namespaces from the XML as a string, using a regex, so that DOMParser can handle it. This is iffy, because regexes + XML, plus the performance effects.
- Swap out the XML datastructure and parser for something that is more tolerant. This comes with the bonus that toGeoJSON will work in a webworker.
Hence: renaming. Going to rewrite togeojson to use htmlparser2 (which can parse XML).
from togeojson.
Can you post the file itself so I can help debug this?
from togeojson.
@tmcw sure! It was a monster, so I've removed all but one <Placemark>
so I could fit in a gist, but you can still see the issue:
Here's a Codepen where you can see 0
vs 1
feature in browser: https://codepen.io/davetapley/pen/JjJRdBv?editors=0011
But with CLI both return the feature:
$ curl -s https://gist.githubusercontent.com/davetapley/c426f7ad68027bc292f5a03837ab50e4/raw/f5974f2e47c3af8c39b02116a160759624b0c0cd/huc6-no-xsi.kml | npx -q @tmcw/togeojson-cli | jq -e '.features | length'
1
$ curl -s https://gist.githubusercontent.com/davetapley/fa6f8e2e96b03f2911c27f20f4123107/raw/7f0b4295e367be50309be47e70f1fda3845b91bd/huc6-with-xsi.kml | npx -q @tmcw/togeojson-cli | jq -e '.features | length'
1
from togeojson.
Okay, I implemented this in #56 but I think that's the wrong solution. htmlparser2 is surprisingly a larger dependency than @xmldom/xmldom
, and requires a lot more shifted-around code.
I think the best path here is actually just to recommend using @xmldom/xmldom
as a parser, even on the web.
from togeojson.
Related Issues (20)
- gpx() and kml() types aren't symmetric HOT 2
- This should complain if the input is not valid XML or valid KML HOT 1
- Unable to use ESM import HOT 5
- Translate TCX courses to folders
- Translate GPX trk elements to Folders
- Keep KML placemarks with missing coordinates HOT 4
- Folder data HOT 1
- Remove swc dep?
- Add support for LinearRing outside Polygon HOT 1
- GPX conversion adds "s" character to extension names HOT 1
- TS7016: Could not find a declaration file
- GPX metadataType HOT 2
- KML Bounds Not Parsed HOT 3
- Unexpected link to online shop in dist/lib HOT 1
- skipEmpty option for KML HOT 1
- KMZ overlay with rotation not working correctly HOT 2
- KMZ overlays not aligning same as seen in Google Earth HOT 3
- gpxx extensions without namespace HOT 1
- Reason for not mapping all found TrackPointExtensions, and only keeping one? HOT 2
- Github sponsoring HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from togeojson.