<< Click to Display Table of Contents >> XML |
![]() ![]() ![]() |
Aqui temos o seguinte arquivo XML:
<?xml version="1.0" standalone="yes"?>
<DocumentElement>
<tabela>
<nome>Daniel</nome>
<obs>Gambi</obs>
</tabela>
<tabela>
<nome>Xunior</nome>
<obs>Matcho</obs>
</tabela>
<tabela>
<nome>Oliveira</nome>
<obs>Cara de bobo</obs>
</tabela>
</DocumentElement>
Vamos ler o arquivo e exibir no console usando 2 linguagens de programação para comparar a complexidade entre elas.
Começamos com o Java que é defendido pelo Xiitas da programação como a melhor que existe:
Java
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Ler {
public static void main(String[] args) {
try {
File file = new File("c:\\tabela.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
NodeList nodeLst = doc.getElementsByTagName("tabela");
for (int s = 0; s < nodeLst.getLength(); s++) {
Node fstNode = nodeLst.item(s);
if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
Element fstElmnt = (Element) fstNode;
NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("nome");
Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
NodeList fstNm = fstNmElmnt.getChildNodes();
System.out.println("Nome: " + ((Node) fstNm.item(0)).getNodeValue());
NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("obs");
Element lstNmElmnt = (Element) lstNmElmntLst.item(0);
NodeList lstNm = lstNmElmnt.getChildNodes();
System.out.println("Obs: " + ((Node) lstNm.item(0)).getNodeValue());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
C#
using System;
using System.Data;
class Ler
{
static void Main(string[] args)
{
DataTable dts = new DataTable("tabela");
dts.Columns.Add("nome");
dts.Columns.Add("obs");
DataRow linha;
dts.ReadXml(@"c:\tabela.xml");
for (int i = 0; i < dts.Rows.Count; i++)
{
linha = dts.Rows[i];
Console.WriteLine("Nome:" + dts.Columns["nome"].ToString());
Console.WriteLine("Obs:" + dts.Columns["obs"].ToString());
}
}
}
Conclusão
Use Java, é mais fácil de ficar maluco. Ah, eu mencionei que Java tem 4 classes diferentes para acessar XML? Deixa pra lá...