java - 在 Java 中解析 XML,其中数据位于属性旁边

标签 java xml parsing openstreetmap

我需要在Java中获取某些XML对象的值,但它们在属性标签中。我不知道该怎么做。

XML 示例:

<node id="359832" version="5" timestamp="2008-05-20T15:20:46Z" uid="4499" changeset="486842" lat="50.9051565" lon="6.963755">
    <tag k="amenity" v="restaurant"/>
    <tag k="name" v="Campus"/>
  </node>
  <node id="451153" version="4" timestamp="2009-09-17T18:09:14Z" uid="508" changeset="2514480" lat="51.6020306" lon="-0.1935029">
    <tag k="amenity" v="restaurant"/>
    <tag k="created_by" v="JOSM"/>
    <tag k="name" v="Sun and Sea"/>
  </node>

我需要获取lat的值和lon ,位于 <node> 内除了 <tag k="name" v="Sun and Sea"/> 的值,并用每组做一些事情。

伪代码:

foreach(node in xmlFile)
{
String name = this.name;
double lat = this.lat;
double lon = this.lon;
//my own thing here
}

我已经看过,但找不到任何有关如何获取 lat 值的信息和lon ,因为它们位于属性旁边而不是嵌套。我不需要使用输入流,xml 文件太小,无法将其存储在内存中。

最佳答案

package com.sandbox;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;

public class Sandbox {

    public static void main(String argv[]) throws IOException, SAXException, ParserConfigurationException {
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        Document document = documentBuilder.parse(Sandbox.class.getResourceAsStream("/foo.xml"));

        NodeList nodeNodeList = document.getElementsByTagName("node");

        for (int i = 0; i < nodeNodeList.getLength(); i++) {

            Node nNode = nodeNodeList.item(i);

            System.out.println(nNode.getAttributes().getNamedItem("lat").getNodeValue());
            System.out.println(nNode.getAttributes().getNamedItem("lon").getNodeValue());

        }

    }


}

打印出来的:

50.9051565
6.963755
51.6020306
-0.1935029

关于java - 在 Java 中解析 XML,其中数据位于属性旁边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21394968/

相关文章:

c++ - 从文件中读取/解析带有 C++ 标签的 ABNF 语法

java - 如何在数组填满时结束的循环中随机填充二维数组

java - Java 中二叉树/图的深度优先搜索

xml - 使用 Report Builder 2.0 : missing fields 从 Sharepoint 查询数据

sql-server - 将 xml 命名空间限制为仅限主根

python - 如何使用 Python Lepl 解析领域特定语言的子集?

java - 在java中解析文本文件,如何删除 ""

java - 迭代图DFS如何添加后访问?

java - 将图片大小调整为 100x100 大小并加载到 JLabel 中调整大小的图片中?

Python lxml - 使用 xml :lang attribute to retrieve an element