我正在尝试阅读一个如下所示的XML行:
<position lat="59.3252414125" long="18.0750236375" accuracy="1000"></position>
这里的目标是取“lat”,“long”和“accuracy”的值,并将它们放在三个Java变量中。
编辑:我想我应该提到该行是从XML中读取的,所以它不像报道的那样容易编辑。
答案 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,最终可能会得到XMLEventReader或XMLStreamReader。两者都有方法来确定Element
中定义的当前处理的XML Event
或XMLStreamConstants
的类型。
如果您有position
元素,如果您使用的是EventReader,则只需使用nextEvent()
获取下一个事件,或者如果您使用的话,则获取带有getAttributeValue()
的属性值StreamReader