Exemplo de Escrita via DOM
Implica a criação de um organograma na memória que contem o documento XML, e com ele na memória podemos fazer qualquer tipo de percurso e ações com os elementos que quisermos. Indicado portanto para movimentação e gravação.
import java.io.*;
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.dom.*;
public class exemploDom
{
public static void main(String[] args)
{
Document doc;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try
{
builder = factory.newDocumentBuilder();
doc = builder.newDocument();
Element root = doc.createElement("main");
Element hroot = doc.createElement("submain");
root.appendChild(hroot);
doc.appendChild(root);
Transformer trans = TransformerFactory.newInstance().newTransformer();
trans.setOutputProperty(OutputKeys.STANDALONE,"yes");
trans.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
trans.setOutputProperty(OutputKeys.INDENT,"yes");
trans.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,"check.dtd");
StringWriter output = new StringWriter();
TransformerFactory.newInstance().newTransformer().transform(
new DOMSource(doc),
new StreamResult(output));
//envia para a tela
System.out.println(output);
//gera um arquivo
trans.transform(new DOMSource(doc),new StreamResult(
new FileOutputStream("OutputXML.xml")));
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
Exemplo de leitura via SAX
Utiliza-se para fazer um percurso da seqüência dos elementos do documento XLM, portanto indicado para leitura.
import java.io.IOException;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
public class exemploSax{
public static void main(String[] args) {
String arquivo = args[0];
try{
AXParser parser = SAXParserFactory.newInstance().newSAXParser();
InputSource input = new InputSource(arquivo);
parser.parse(input, new XMLHandler());
}
tch (ParserConfigurationException ex) {
x.printStackTrace();
}
ch (SAXException ex) {
ex.printStackTrace();
}
tch (IOException ex) {
ex.printStackTrace();
}
}
}
class XMLHandler extends DefaultHandler {
private StringBuffer galhoAtual = new StringBuffer(200);
private StringBuffer valorAtual = new StringBuffer(100);
public void startDocument() {
System.out.print("iniciando");
}
public void startElement(String uri,String localName,String tag,Attributes atributos) {
galhoAtual.append("/" + tag);
System.out.print(
"\n<"+ galhoAtual.substring(1)+ (atributos.getLength() != 0 ? " +ATRIBUTOS" : "")+ ">");
valorAtual.delete(0, valorAtual.length());
}
public void characters(char[] ch, int start, int length) {
valorAtual.append(ch, start, length);
}
public void endElement(String uri, String localName, String tag) {
System.out.print(valorAtual.toString().trim());
valorAtual.delete(0, valorAtual.length());
galhoAtual.delete(
galhoAtual.length() - tag.length() - 1,
galhoAtual.length());
}
public void endDocument() {
System.out.print("\nterminando");
}
}

Nenhum comentário:
Postar um comentário