Mam usługę sieci Web C#, która zwraca XML jako wynik, który zostanie zużyty przez aplikację Delphi 7. Normalnie zwróciłbym klasę .Net XmlDocument, jeśli miałbym klienta .Net, ale dla Delphi zwracam ciąg znaków. Poniżej znajduje się kod C# Web Service:Sprawdzanie poprawności schematu XML w Delphi odbieranego przez usługę WWW C# jako parametr
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;
}
W Delphi, mam poniżej kod z innym pytaniem here na StachOverflow i działa doskonale gdybym musiał załadować XML i XSD z dysku, ale muszę załaduj go z pamięci. Poniżej jest mój kod Delphi teraz:
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;
Jaki byłby kod Delphi, aby załadować XSD i XML z WideString zmienne, i to działa jak kod, który ładuje je z pliku, walidacji XML na stałym Schemat XSD zakodowany w aplikacji? Czy istnieje lepszy sposób na zwrócenie XML z C#, aby łatwiej było go czytać w Delphi?
Tks za poświęcony czas!
Tks człowiek! Pracował jak urok. I tks za linki! – Pascal