function CargarXmlDom(sXml){
	var oXmlDom;
	if (window.ActiveXObject){
		oXmlDom = new ActiveXObject('Msxml2.DOMDocument');
		oXmlDom.async = false;
		oXmlDom.loadXML(sXml);
		if (oXmlDom.parseError.errorCode != 0){
			alert(DevolverErrorParseoXml(oXmlDom.parseError));
			oXmlDom = null;
		}
	}else if(document.implementation && document.implementation.createDocument){
		var oParser = new DOMParser();
		oXmlDom = oParser.parseFromString(sXml, "text/xml");
		if (oXmlDom.documentElement.tagName == 'parsererror'){
			alert(DevolverErrorParseoXml(oXmlDom.getElementsByTagName('parsererror')));
			oXmlDom = null;
		}
	}
	return oXmlDom;
}
function TraerNodo(oXmlDom,sNombreTag){
	if (oXmlDom.getElementsByTagName(sNombreTag) && oXmlDom.getElementsByTagName(sNombreTag).length > 0) {
		return oXmlDom.getElementsByTagName(sNombreTag)[0];
	}
}
function TraerListaNodosHijos(oXmlDom){
	if (oXmlDom) {
		return oXmlDom.childNodes;
	}
}
function TraerNombreNodo(oXmlNode){
 	return oXmlNode.tagName;
}
function TraerValorNodoDeDocumentoXml(oXmlDom,sNombreTag){
	var oTmpNodo;
	oTmpNodo = oXmlDom.getElementsByTagName(sNombreTag);
	if (oTmpNodo && oTmpNodo.length > 0 && oTmpNodo[0].firstChild){
		return oTmpNodo[0].firstChild.nodeValue;
	}
	return '';
}
function TraerValorNodo(oXmlNode){
	if (oXmlNode.firstChild){
		return oXmlNode.firstChild.nodeValue;
	}
	return '';
}
function DevolverErrorParseoXml(oXmlError){
	var sError = '';
	if (window.ActiveXObject){
		var sPosicion = '';
		for (var i=1; i < oXmlError.linepos; i++) {
			sPosicion += '-';
		}
		sError = 'XML Error ' + oXmlError.errorCode + ' loading "' + oXmlError.url + '" ' + '\n' + oXmlError.reason + ' ';
		if (oXmlError.line > 0){
			sError += '\nat line ' + oXmlError.line + ', character ' + oXmlError.linepos + '\n' + oXmlError.srcText + '\n' + sPosicion + '^';
		}
	}else if(document.implementation && document.implementation.createDocument){
		sError = oXmlError[0].firstChild.nodeValue;
		sError += '\n' + oXmlError[0].getElementsByTagName('sourcetext')[0].firstChild.nodeValue;
	}
	return sError;
}
