2017-07-23 1 views
-2

Ich werde ref Werte aus einer OSM-Datei extrahieren, die wie folgt aussieht:Wie Ref-Werte aus den Elementen des Tags 'Weg' in Osm-Datei in Java zu extrahieren?

<?xml version='1.0' encoding='UTF-8'?> 
<osm version="0.6" generator="osmfilter 1.4.2"> 
    <way id="10053349"> 
     <nd ref="4534884733"/> 
     <nd ref="4534884725"/> 
     <nd ref="4534884748"/> 
     <nd ref="82608659"/> 
     <nd ref="82608658"/> 
     <nd ref="639108039"/> 
     <nd ref="3451083060"/> 
     <nd ref="345553449"/> 
     <nd ref="345553447"/> 
     <nd ref="345553431"/> 
     <nd ref="3451083057"/> 
     <nd ref="345553432"/> 
     <nd ref="345553433"/> 
     <nd ref="345553434"/> 
     <nd ref="345553435"/> 
     <nd ref="3451083068"/> 
     <nd ref="345553436"/> 
     <nd ref="29564147"/> 
     <nd ref="345553437"/> 
     <nd ref="345553438"/> 
     <nd ref="3451083079"/> 
     <nd ref="345553439"/> 
     <nd ref="3451083082"/> 
     <nd ref="345553440"/> 
     <nd ref="1326631485"/> 
     <nd ref="82608663"/> 
     <nd ref="82608662"/> 
     <nd ref="4534884733"/> 
     <tag k="addr:housenumber" v="21"/> 
     <tag k="addr:street" v="Arcisstraße"/> 
     <tag k="amenity" v="university"/> 
     <tag k="building" v="yes"/> 
     <tag k="name" v="1"/> 
     <tag k="wheelchair" v="yes"/> 
    </way> 
</osm> 

Was ich am Ende will wie ref Werte in einer Textdatei zu speichern:

4534884733 
4534884725 
4534884748 
82608659 
82608658 
639108039 
3451083060 
. 
. 

Can jemand mir bitte helfen? Gibt es einen Java-Code, mit dem ich diese Aufgabe ausführen kann?

+1

Ich entfernte die Perl- und Python-Tags. Bitte markieren Sie keine Spam-Mails. Es gibt keinerlei Anhaltspunkte dafür, dass dies mit einer dieser Sprachen zu tun hat. Stack Overflow ist kein Code-Schreibdienst. Sie müssen den Code, den Sie ausprobiert haben, mit einer bestimmten Frage an einen Ort senden, an dem Sie Probleme damit haben. Bitte lesen Sie [wie Sie eine Frage stellen] (https://stackoverflow.com/help/how-to-ask). – stevieb

+0

crosspost: https://help.openstreetmap.org/questions/57230/how-to-extract-node-reference-values-within-a-way-from-osm-file – scai

Antwort

0

sollten Sie Xpath verwenden:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
Document doc = builder.parse("C://...//myFile.xml"); 

XPathFactory xPathfactory = XPathFactory.newInstance(); 
XPath xpath = xPathfactory.newXPath(); 
XPathExpression expr = xpath.compile("//nd/@ref"); 
NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET); 

Das Muster "//nd/@ref" wird alle nd Element und halten ihre ref attibute, werden Sie über sie als nächstes lesen können, NodeList ist nicht iterable ou müssen wie gehen throught ein Array:

for (int i = 0; i < nl.getLength(); i++) 
    //write : nl.item(i).getTextContent(), somewhere 
} 
+0

Bitte, ermutigen Sie nicht "bitte schreiben Sie der Code für mich "tippen Sie Fragen. – stevieb

Verwandte Themen