У меня есть это содержимое файла XML.Мне нужно выполнить итерацию в XML-файле с помощью Iterator в Java.Я не хочу повторять цикл или что-то другое.Только Итератором.Можете ли вы показать мне, как перебирать XML-файл с помощью итератора?Могу ли я прочитать XML-файл, такой как текстовый файл, или мне нужно проанализировать файл по DOM?
XML-файл
<?xml version="1.0" encoding="utf-8"?>
<Rules>
<Rule id="damaged">
<Question>Do you want to accidents car?</Question>
<Answer>
<Selection value="true">
<SingleValue value="yes"/>
</Selection>
<Selection value="false">
<SingleValue value="no"/>
</Selection>
</Answer>
</Rule>
<Rule id="family">
<Question>Do you want to family car?</Question>
<Answer>
<Selection value="true">
<MultipleValue value="yes"/>
</Selection>
<Selection value="false">
<MultipleValue value="no"/>
</Selection>
</Answer>
</Rule>
<Rule id="money">
<Question>Do you have 200.000 PLN for a car?</Question>
<Answer>
<Selection value="true">
<SingleValue value="yes"/>
</Selection>
<Selection value="false">
<SingleValue value="no"/>
</Selection>
</Answer>
</Rule>
<Rule id="drivingGear">
<Question>Do you have front-wheel drive?</Question>
<Answer>
<Selection value="true">
<MultipleValue value="on the front wheels"/>
</Selection>
<Selection value="false">
<MultipleValue value="on the rear wheels"/>
</Selection>
</Answer>
</Rule>
<Rule id="gearBox">
<Question>Do you want to automatic gearbox?</Question>
<Answer>
<Selection value="true">
<SingleValue value="automatic"/>
</Selection>
<Selection value="false">
<SingleValue value="manual"/>
</Selection>
</Answer>
</Rule>
<Rule id="comfort">
<Question>What is more important for you?</Question>
<Answer>
<Selection value="true">
<SingleValue value="comfort"/>
</Selection>
<Selection value="false">
<SingleValue value="speed"/>
</Selection>
</Answer>
</Rule>
...
<Rule id="luxury">
<Question>What feature is must-have for you?</Question>
<Answer>
<Selection value="true">
<MultipleValue value="gps,bluetooth,dvd,automatic transmission,self-driving"/>
</Selection>
<Selection value="false">
<MultipleValue value="nothing,abs,fog lights,central lock"/>
</Selection>
</Answer>
</Rule>
А вот код, написанный мной ..
public class Question{
private List<String> splittedXML;
public Question(){
this.splittedXML = new ArrayList<>();
}
public List<String> getSplittedXML(){
return this.splittedXML;
}
public Iterator<String> QuestionIterator(){
try (BufferedReader br = new BufferedReader(new FileReader("/home/hubert/Pulpit/expert-system-hubert/Rules.xml"))) {
String line;
while ((line = br.readLine()) != null) {
String[] splittedTextXMLFile = line.split("\n");
for(String singleLine: splittedTextXMLFile){
if(singleLine.equals("Question")){
splittedXML.add(singleLine.substring(singleLine.indexOf(">") + 1, singleLine.indexOf("<")));
}
}
}
Iterator<String> itr = splittedXML.iterator();
while(itr.hasNext()){
return itr;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}