如何在java中的osm文件中从标记'way'的元素中提取ref值?
问题描述:
我会从一个OSM文件,它看起来像这样提取参考值:如何在java中的osm文件中从标记'way'的元素中提取ref值?
<?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>
我想在结束是参考值存储在像一个文本文件:
4534884733
4534884725
4534884748
82608659
82608658
639108039
3451083060
.
.
灿有人帮助我吗?有没有我可以用来执行此任务的Java代码?
答
你应该使用Xpath
:
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);
模式"//nd/@ref"
将采取一切nd
元素并保持其ref
attibute,你就能下完了他们阅读,NodeList
不是迭代OU需要去throught像一个数组:
for (int i = 0; i < nl.getLength(); i++)
//write : nl.item(i).getTextContent(), somewhere
}
+0
请不要鼓励“请写出代码为我“类型的问题。 – stevieb
我删除了Perl和Python标记。请不要标记垃圾邮件......这里没有任何内容表明这与任何这些语言有关。此外,堆栈溢出不是代码写入服务。您需要发布您尝试过的代码,并在您遇到问题的某个地方发布具体问题。请阅读[如何提出问题](https://stackoverflow.com/help/how-to-ask)。 – stevieb
crosspost:https://help.openstreetmap.org/questions/57230/how-to-extract-node-reference-values-within-a-way-from-osm-file – scai