使用Java读取单个XML行

时间:2011-03-08 10:35:45

标签: java xml

我正在尝试阅读一个如下所示的XML行:

<position lat="59.3252414125" long="18.0750236375" accuracy="1000"></position>

这里的目标是取“lat”,“long”和“accuracy”的值,并将它们放在三个Java变量中。

编辑:我想我应该提到该行是从XML中读取的,所以它不像报道的那样容易编辑。

3 个答案:

答案 0 :(得分:2)

尝试:

    String s = "<position lat=\"59.3252414125\" long=\"18.0750236375\" accuracy=\"1000\"></position>";
    InputSource is = new InputSource(new StringReader(s));
    DOMParser dp = new DOMParser();
    dp.parse(is);
    Document doc = dp.getDocument();
    NodeList nl = doc.getElementsByTagName("position");
    Node n = nl.item(0);
    NamedNodeMap nnm = n.getAttributes();
    String lat = nnm.getNamedItem("lat").getFirstChild().getTextContent();
    String longg = nnm.getNamedItem("long").getFirstChild().getTextContent();
    String accuracy = nnm.getNamedItem("accuracy").getFirstChild().getTextContent();

建议读物:

答案 1 :(得分:0)

仅使用String.split()函数:

package com.stackoverflow.q5231285;

public class Test {
    public static void main(String[] args) {
        String xmlLine = "<position lat=\"59.3252414125\" long=\"18.0750236375\" accuracy=\"1000\"></position>";
        String splitResult[] = xmlLine.split("\"");

        Double latValue = Double.parseDouble(splitResult[1]);
        Double longValue = Double.parseDouble(splitResult[3]);
        int accuracy = Integer.parseInt(splitResult[5]);
        System.out.println(latValue + " " + longValue + " " + accuracy);
    }
}

答案 2 :(得分:0)

如果您使用的是SAX或StAX,最终可能会得到XMLEventReaderXMLStreamReader。两者都有方法来确定Element中定义的当前处理的XML EventXMLStreamConstants的类型。
如果您有position元素,如果您使用的是EventReader,则只需使用nextEvent()获取下一个事件,或者如果您使用的话,则获取带有getAttributeValue()的属性值StreamReader