Ho un servizio Web C# che restituisce un XML come risultato che verrà utilizzato da un'applicazione Delphi 7. Normalmente, restituirei una classe .Net XmlDocument se avessi un client .Net, ma, per Delphi, restituirò una stringa. Di seguito è riportato il codice C# servizio Web:Convalida lo schema XML in Delphi ricevuto dal servizio Web C# come parametro
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;
}
In Delphi, ho ottenuto il codice qui sotto da un'altra domanda here a StachOverflow, e funziona perfettamente se dovessi caricare il XML e XSD dal disco, ma ho bisogno di caricarlo dalla memoria. Qui di seguito è il mio codice Delphi ora:
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;
Quale sarebbe il codice Delphi per caricare il XSD e XML da WideString variabili, e farla lavorare come il codice che li carica da file, validazione del XML su una fissa Schema XSD codificato nell'applicazione? C'è un modo migliore per restituire l'XML da C# in modo che sia letto più facilmente in Delphi?
Tks per il tuo tempo!
Tks man! Ha funzionato come un fascino. E anche tks per i link! – Pascal