Я хочу разобрать следующий URL: http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=nucleotide&id=224589801
В результате я придумал следующий метод:
public void parseXml2(String URL) {
DOMParser parser = new DOMParser();
try {
parser.parse(new InputSource(new URL(URL).openStream()));
Document doc = parser.getDocument();
NodeList nodeList = doc.getElementsByTagName("Item");
for (int i = 0; i < nodeList.getLength(); i++) {
Node n = nodeList.item(i);
Node actualNode = n.getFirstChild();
if (actualNode != null) {
System.out.println(actualNode.getNodeValue());
}
}
} catch (SAXException ex) {
Logger.getLogger(TaxMapperXml.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(TaxMapperXml.class.getName()).log(Level.SEVERE, null, ex);
}
}
С помощью этого метода я могу получить значения узлов Item, но не могу получить ни один из их атрибутов. Я попытался поэкспериментировать с getAttribute () с NamedNodeMap, но все еще безрезультатно.
Почему я должен сделать n.getFirstChild().getNodeValue();
, чтобы получить фактическое значение? n.getNodeValue()
возвращает только ноль? Разве это не интуитивно понятно - очевидно, в моем случае узлы не имеют подузлов?
Существует ли более надежный и общепринятый способ анализа файлов XML с использованием DOM? Мои файлы не должны быть большими 15-20 строками, поэтому SAX не нужен (или это?)