java如何从for循环中获取指定属性?
我试图得到“Value”字符串,它的NumVotes值最大。 在那之后,我想做一个简单的asserion(我知道怎么做),但我有问题如何获得这个“值”。我对此一无所知
public class DomParserDemo {
public static void main(String[] args) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader("<poll name=\"language_dependence\" title=\"Language Dependence\" totalvotes=\"170\"><results><result level=\"1\" value=\"No necessary in-game text\" numvotes=\"168\"/><result level=\"2\" value=\"Some necessary text - easily memorized or small crib sheet\" numvotes=\"0\"/><result level=\"3\" value=\"Moderate in-game text - needs crib sheet or paste ups\" numvotes=\"0\"/><result level=\"4\" value=\"Extensive use of text - massive conversion needed to be playable\" numvotes=\"0\"/><result level=\"5\" value=\"Unplayable in another language\" numvotes=\"2\"/></results></poll>"));
Document doc = dbBuilder.parse(is);
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nodeList = doc.getElementsByTagName("result");
for (int i = 0; i < nodeList.getLength(); i++) {
Element element = (Element) nodeList.item(i);
System.out.println("Level = "+ element.getAttribute("level")+", "+
"Value = "+element.getAttribute("value")+", "+
"NumVotes = "+element.getAttribute("numvotes"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
电流输出:
Root element :poll
Level = 1, Value = No necessary in-game text, NumVotes = 168
Level = 2, Value = Some necessary text - easily memorized or small crib sheet, NumVotes = 0
Level = 3, Value = Moderate in-game text - needs crib sheet or paste ups, NumVotes = 0
Level = 4, Value = Extensive use of text - massive conversion needed to be playable, NumVotes = 0
Level = 5, Value = Unplayable in another language, NumVotes = 2
# 1 楼答案
您已经在迭代所有元素。通过使用一个变量跟踪到目前为止的最大值,并将其与每个值进行比较,就可以通过一个元素属性找到最大值。您的for循环有点修改:
但是,如果要按投票数对元素进行排序,请将元素添加到列表中,并使用比较器按投票数或任何其他字段进行排序