Tengo un servicio web C# que devuelve como resultado un XML que será consumido por una aplicación Delphi 7. Normalmente, devolvería una clase .Net XmlDocument si tuviera un cliente .Net, pero, para Delphi, devolveré una cadena. A continuación se muestra el código # servicio Web C:Validar el esquema XML en Delphi recibido por el servicio web C# como un parámetro
public String ReturnXML()
{
XmlDocument xmlDoc = GenerateXmlMethod();
String sXmlResult = String.Empty;
if (xmlDoc != null)
{
using (StringWriter oXml = new StringWriter())
{
xmlDoc.Save(oXml);
sXmlResult = oXml.ToString();
}
}
return sXmlResult;
}
En Delphi, me dieron el código de abajo de otra pregunta here en StachOverflow, y funciona perfectamente si tuviera que cargar el XML y XSD desde el disco, pero necesito cargarlo desde la memoria. A continuación se muestra el código Delphi ahora:
procedure TfrmTestador.Button3Click(Sender: TObject);
var
XML, XSDL, XSDLDom: Variant;
begin
XSDLDom := CreateOLEObject('MSXML2.DOMDocument.6.0');
try
XSDLDom.async := false;
XSDLDom.load('C:\Temp\XsdFile.xsd');
XSDL := CreateOLEObject('MSXML2.XMLSchemaCache.6.0');
try
XSDL.add('',XSDLDom);
XML := CreateOLEObject('Msxml2.DOMDocument.6.0');
try
XML.validateOnParse := True;
XML.resolveExternals := True;
XML.schemas := XSDL;
XML.load('C:\Temp\XmlFile.xml');
ShowMessage(XML.parseError.reason);
finally
XML := Unassigned;
end;
finally
XSDL := Unassigned;
end;
finally
XSDLDom := Unassigned;
end;
end;
¿Cuál sería el código de Delphi para cargar el XSD y XML desde WideString las variables, y lo han de trabajar como el código que los carga de archivos, validar el XML en un fijo Esquema XSD que está codificado en la aplicación? ¿Hay alguna forma mejor de devolver el XML de C# para que se pueda leer más fácilmente en Delphi?
¡Gracias por su tiempo!
Tks man! Trabajado como un encanto. ¡Y también para los enlaces! – Pascal