>

NumVotes의 값이 가장 큰 "Value"문자열을 얻으려고합니다. 그런 다음 간단한 어설 션을 수행하고 싶지만 (어떻게 수행하는지 알고 있음)이 "값"을 얻는 방법에 문제가 있습니다. 그것에 대한 아이디어와 지식이 없습니다.

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 루프가 약간 수정되었습니다 :

    String targetValue = "";
    int maxNumVotes = 0;
    for (int i = 0; i < nodeList.getLength(); i++) {
        Element element = (Element) nodeList.item(i);
        int numVotes = Integer.parseInt(element.getAttribute("numvotes"));
        if (numVotes > maxNumVotes) {
            maxNumVotes = numVotes;
            targetValue = element.getAttribute("value");
        }
    }
    System.out.println("Value: " + targetValue + " NumVotes: " + maxNumVotes);
    
    

    그러나 투표 수로 요소를 정렬하려면 목록에 요소를 추가하고 비교기를 사용하여 투표 수 또는 다른 필드로 정렬하십시오.

  • 이전 python - 메타 클래스를 사용하여 장고 모델을 동적으로 확장
  • 다음 javascript - 실행중인 하위 프로세스 출력의 첫 번째 라인 가져 오기