У меня есть веб-служба C #, которая возвращает XML в результате, который будет использоваться приложением Delphi 7. Обычно я бы возвращал класс .Net XmlDocument, если бы у меня был клиент .Net, но для Delphi я возвращаю строку. Ниже приведен код веб-службы C #:
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;
}
В Delphi я получил код ниже из другого вопроса здесь в StachOverflow, и он отлично работает, если мне нужно было загрузить XML и XSD с диска, но мне нужно загрузить его из памяти. Ниже мой код Delphi сейчас:
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;
Каким будет код Delphi для загрузки XSD и XML из переменных WideString, и он будет работать как код, который загружает их из файла, проверяя XML в фиксированной схеме XSD, которая закодирована в приложении? Есть ли лучший способ вернуть XML из C #, чтобы его было легче читать в Delphi?
Ткс за ваше время!