値が最も高く、それを囲む要素を返す要素 (XML は初めてで、専門用語がわかりません。それは要素と呼ばれますか?!?) を見つける Java プログラムを作成しようとしています。コードの例を次に示します。
<conversation input="HELLO">
<output hits="3">
HI MATE
</output>
<output hits="8">
HELLO
</output>
</conversation>
どの「出力」に「ヒット」が最も多いかを検出し、それに含まれる値を返します (例: HELLO)。stAX を使用しようとしていますが、別の方法を使用してこれを行うためのより良い方法を知っている場合は、すぐに使用してください。
編集 要求された完全なコードは次のとおりです。
package charles;
import java.io.FileNotFoundException;
import java.io.FileReader;
import javax.swing.JOptionPane;
import javax.xml.stream.*;
import javax.xml.stream.events.*;
public class NewClass {
//Memory
static String currentResult = null;
static int highestHits = 0;
private static String filename = "\\Files\\Java\\Projects\\CHARLES\\src\\charles\\Memory.xml";
static XMLEventReader reader;
public static void main(String args[]) throws XMLStreamException, FileNotFoundException {
try {
filename = "\\Files\\Java\\Projects\\CHARLES\\src\\charles\\Memory.xml";
} catch (ArrayIndexOutOfBoundsException aioobe) {
System.exit(0);
}
try {
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader reader =
factory.createXMLEventReader(new FileReader(filename));
while (reader.hasNext()) {
XMLEvent e = reader.nextEvent();
System.out.println("ID:" + e.hashCode() + "[" + e + "]");
}
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "The file does not exist!" + "\nProgram is terminating.", "File Not Found", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
private static void analyze() {
while (reader.hasNext()) {
int event = (int) reader.next();
if (event == XMLStreamConstants.START_ELEMENT && reader.getLocalName().equals(input)) {
int currentHits = Integer.parseInt(reader.getAttributeValue(0));
if (currentHits > highestHits) {
highestHits = currentHits;
reader.next();
currentResult = reader.getText();
}
}
}
}
}