I have an XML with a list of beaches.
每个条目如下:
<beach>
<name>Dor</name>
<longitude>32.1867</longitude>
<latitude>34.6077</latitude>
</beach>
我正在使用Jsoup将此XML读入Document doc。
有没有简单的方法来处理这些数据? 我希望能够做到这样的事情:
x = my_beach_list["Dor"].longitude;
目前我把它放在Jsoup Doc中,我正在使用:
x = get_XML_val(doc, "Dor", "longitude");
将get_XML_val定义为:
private String get_XML_val(Document doc, String element_name, String element_attr) {
Elements beaches = doc.select("beach");
Elements one_node = beaches.select("beach:matches(" + element_name + ")");
Element node_attr = one_node.select(element_attr).first();
String t = node_attr.text();
return t;
}
由于 ORI
答案 0 :(得分:0)
Java是一种面向对象的语言,通过使用这一事实可以获得很多好处,例如,您可以将XML解析为java数据结构一次,并将其用作查找,例如:
class Beach {
private String name;
private double longitude;
private double latitude;
// constructor;
// getters and setters;
}
现在,当您设置了类时,您可以开始将xml解析为海滩对象列表:
List<Beach> beaches = new ArrayList<>();
// for every beach object in the xml
beaches.add(new Beach(val_from_xml, ..., ...);
现在,当您想要查找特定对象时,可以查询您的集合。
beaches.stream().filter(beach -> "Dor".equals(beach.getName()));
答案 1 :(得分:0)
您可以使用XPath
求值程序直接对xml执行查询,并获取结果。例如:名为 Dor 的海滩的经度值的xpath
表达式为:/beach[name="Dor"]/longitude
评估xpath表达式的相应java代码可以写成:
private static void getValue(String xml) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new StringBufferInputStream(xml));
doc.getDocumentElement().normalize();
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nodeList = (NodeList) xPath.compile("/beach[name=\"Dor\"]/longitude").evaluate(doc,
XPathConstants.NODESET);
System.out.println(nodeList.item(0).getTextContent());
} catch (IOException | ParserConfigurationException | XPathExpressionException | SAXException exception) {
exception.printStackTrace();
}
}
上述方法打印经度值为:32.1867
有关Xpath here的更多信息。