Cześć. Chciałem napisać sobie prosty parser XMLa i napisałem. Problem w tym, że niepoprawnie : ) Wiem jak już napisać to żeby działało ok, ale mimo to nie rozumiem dlaczego moje rozumowanie jest błędne. Poniżej mój początkowy niedziałający kod (doc jest typu Document):
public void parseFile(String filePath) {
try {
doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(filePath);
}
catch (SAXException e) {e.printStackTrace();}
catch (IOException e) {e.printStackTrace();}
catch (ParserConfigurationException e) {e.printStackTrace();}
NodeList listOfUsers = doc.getElementsByTagName("user");
// iteruje po wezlach <user> :
for(int i=0; i<listOfUsers.getLength(); i++)
{
// biore pojedynczego <usera>:
Node userNode = listOfUsers.item(i);
// userNodes zawiera wezly z danymi pojedycznego usera:
NodeList userNodes = userNode.getChildNodes();
// dla kazdego takiego wezla wypisuje jego nazwe i wartosc (wydawalo mi sie to intuicyjne):
for(int j=0; j<userNodes.getLength(); j++)
{
String nodeName = userNodes.item(j).getNodeName();
String nodeValue = userNodes.item(j).getNodeValue();
System.out.println(nodeName + ": " + nodeValue);
}
}
}
XML:
<users>
<user>
<name>Imie</name>
<surname>Nazwisko</surname>
<age>19</age>
</user>
</users>