我想读,看起来像这样一个XML线:阅读单一XML行与Java
<position lat="59.3252414125" long="18.0750236375" accuracy="1000"></position>
这里的目标是采取的“纬度”,“长”和“准确性”的价值观并将它们放入三个Java变量中。
编辑:我想我应该提到该行是从XML中读取的,因此它不会很容易编辑,因为它会出现。
我想读,看起来像这样一个XML线:阅读单一XML行与Java
<position lat="59.3252414125" long="18.0750236375" accuracy="1000"></position>
这里的目标是采取的“纬度”,“长”和“准确性”的价值观并将它们放入三个Java变量中。
编辑:我想我应该提到该行是从XML中读取的,因此它不会很容易编辑,因为它会出现。
尝试:
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();
推荐读物:
如果从XML文件中读取有问题的XML行,这会如何处理?因为我隔离了最后3行导致NullPointerException。 – Zephyr 2011-03-09 10:40:15
@Zephyr如果你正在阅读文件使用:'dp.parse(“complete \\ file \\ path \\ fully \\ escaped”);' – Nishant 2011-03-09 10:52:46
它现在正在工作!我交换了.getFirstChild()。getTextContent();与getNodeValue()); – Zephyr 2011-03-09 12:31:59
只使用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);
}
}
如果你使用的SAX或StAX的,你可能会用XMLEventReader或XMLStreamReader结束。两者都有确定当前正在处理的XML Element
或Event
的类型的方法,在XMLStreamConstants
中定义。
如果您有position
元素,只要使用EventReader即可获得nextEvent()
的下一个事件,或者在使用StreamReader时获取getAttributeValue()
的属性值
您正在使用哪种xml框架? – kostja 2011-03-08 10:37:26
那么,有什么麻烦? – 2011-03-08 10:37:26
你基本上有2个选择与默认jdk:萨克斯/斯塔克斯和dom – kostja 2011-03-08 10:38:02