Ola,
No exemplo atual, temos o seguinte:
<venda>
<formaDePagamento>Cartao</formaDePagamento>
<produtos>
<produto>
<nome>Livro de java com xml</nome>
<preco>59.90</preco>
</produto>
<produto>
<nome>Livro de jax-p</nome>
<preco>59.90</preco>
</produto>
<produto>
<nome>Livro de O.O em java</nome>
<preco>59.90</preco>
</produto>
</produtos>
</venda>
E se caso tivéssemos dois preços dentro da tag produto, como no exemplo abaixo, como que poderíamos ler estas tags caso venha a ser duas ou mais tags de preço?
........
<produtos>
<produto>
<nome>Livro de java com xml</
<preco>59.90</preco>
<preco>24.90</preco>
<preco>36.90</preco>
</produto>
.....
Eu encontrei uma forma de ler, mas não sei se está totalmente correto, ou se poderá ter deficiencias no codigo futuramente:
public class TesteXml {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
final DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
try {
final DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document process = null;
process = docBuilder.parse("src//xmltesting/testando.xml");
process.getDocumentElement().normalize();
System.out.println("Imprimindo a leitura do xml:");
NodeList produtos = process.getElementsByTagName("produto");
System.out.println("Assim funciona diferente e lê todas as tags:");
final NodeList attributes = process.getElementsByTagName("formaDePagamento");
final Element attributesNode = (Element) attributes.item(0);
final String AformaDePagamento = attributesNode.getTextContent();
System.out.println(AformaDePagamento);
}
finally {}
}
}