/**
 * Classe que representa um arquivo/literal em formato <code>XML</code> através de um objeto.
 * 
 * @author Renato Sulzbach
 * @version 1.0
 * @since 30/07/2007
 */
function Xml() {

	this.xmlComoObjeto = null;


	/**
	 * Transforma o arquivo xml recebido (como literal) em uma árvore representada através
	 * de um objeto na memória (parser).
	 */
	this.lerXml = function(xmlComoString) {
		var leitor = new XML.ObjTree(); 
		this.setXmlComoObjeto(leitor.parseXML(xmlComoString));
	}
	
	/**
	 * Faz a leitura no objeto xml em busca do elemento e do valor do atributo desse elemento.
	 * @param elemento elemento a ser localizado na árvore <code>XML</code>.
	 * @param atributo atributo do elemento informado a ser lido.
	 * @return o valor do atributo do elemento requisitado.
	 */
	this.getAtributo = function(elemento, atributo) {
		var valor = eval("xmlComoObjeto." + elemento + "['-" + atributo + "']");
		return valor;
	}
	
	this.getValorElemento = function(elemento) {
		var valor = eval("this.xmlComoObjeto." + elemento);
		return valor;
	}
	
	/**
	 * Retorna array com múltiplos valores para elementos <code>XML</code> multivalorados.
	 * @param elemento elemento a ser localizado na árvore <code>XML</code>.
	 * @return array com os múltiplos valores do elemento requisitado.
	 */
	this.getArrayDadosXml = function(elemento) {
		var arrayDados = new Array();	
		var raizDoElemento = eval("xmlComoObjeto." + elemento);
		for (i=0; i < raizDoElemento.length; i++) {
			arrayDados[i] = raizDoElemento[i];
		}
		return arrayDados;
	}
	
	/**
	 * Retorna dados para elementos <code>XML</code> monovalorados.
	 * @param elemento elemento a ser localizado na árvore <code>XML</code>.
	 * @return dados do elemento requisitado.
	 */
	this.getDadosXml = function(elemento) {
		var dados = eval("xmlComoObjeto." + elemento);
		return dados;
	}
	
	
	/*
	 * Métodos de acesso e modificação. 
	 */	
	this.setXmlComoObjeto = function(vXmlComoObjeto) {
		this.xmlComoObjeto = vXmlComoObjeto;
	}
	
	this.getXmlComoObjeto = function() {
		return xmlComoObjeto;
	}
}