Я пытаюсь разобрать XML-файл на Java, и он работает нормально, но я не совсем понимаю, почему. У меня есть следующий код (я только что вырезал важные вещи):
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File(fileName));
NodeList nodeList = document.getDocumentElement().getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++)
{
Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element elem = (Element) node;
// Get the value of all sub-elements.
String original = elem.getElementsByTagName("Original")
.item(0).getChildNodes().item(0).getNodeValue();
String translation = elem.getElementsByTagName("Translation").item(0)
.getChildNodes().item(0).getNodeValue();
Integer score = Integer.parseInt(elem.getElementsByTagName("Score")
.item(0).getChildNodes().item(0).getNodeValue());
}
Мой XML прост:
<?xml version="1.0" encoding="UTF-8"?>
<Dictionary>
<Word>
<Original>die Unterwäsche</Original >
<Translation>Bielizna</Translation>
<Score>-4</Score>
</Word>
<Word>
<Original>die Müche</Original>
<Translation>Fatyga, trud</Translation>
<Score>0</Score>
</Word>
<Word>
<Original>wetten</Original>
<Translation>założyć się</Translation>
<Score>-6</Score>
</Word>
<Word>
<Original>umsonst</Original>
<Translation>Bez powodu</Translation>
<Score>0</Score>
</Word>
</Dictionary>
Большой вопрос: почему у меня 9 узлов при вызове nodeList.getLength ()? Я распечатал их, и 4 - это элементы (вроде нормально), а 5 других - текстовые узлы, но я не совсем понимаю, что они из себя представляют. И почему Node привязан к Element?
Во-вторых, эта часть:
elem.getElementsByTagName("Score")
.item(0).getChildNodes().item(0).getNodeValue());
Я вызываю элемент (0) на найденном узле, но опять же, что это практически?
Я был бы очень признателен за вашу помощь, я довольно новичок, и я уже некоторое время борюсь с этим. Публикация пошагового руководства о том, что есть в перечисленных частях моего XML, означала бы для меня целый мир.
builder
и чтоdocument
? - person ThisClark   schedule 11.05.2015