Tôi có một Dịch vụ Web C# trả về một kết quả XML sẽ được ứng dụng Delphi 7 tiêu thụ. Thông thường, tôi sẽ trả về một lớp Net XmlDocument nếu tôi có một máy khách .Net, nhưng, đối với Delphi, tôi sẽ trả về một chuỗi. Dưới đây là C# Web Service Code:Xác thực Lược đồ XML trong Delphi nhận được bởi dịch vụ web C# dưới dạng tham số
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;
}
Trong Delphi, Tôi đã nhận mã dưới đây từ một câu hỏi here tại StachOverflow, và nó hoạt động hoàn hảo nếu tôi đã phải nạp XML và XSD từ đĩa, nhưng tôi cần phải tải nó từ bộ nhớ. Dưới đây là mã Delphi của tôi bây giờ:
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;
Điều gì sẽ là mã Delphi để nạp XSD và XML từ WideString biến, và có nó làm việc như mã mà tải chúng từ tập tin, chứng thực XML trên một cố định Lược đồ XSD được mã hóa trong ứng dụng? Có cách nào tốt hơn để trả về XML từ C# vì vậy nó được đọc dễ dàng hơn vào Delphi?
Tks cho thời gian của bạn!
Tks man! Làm việc như người ở. Và tks cho các liên kết là tốt! – Pascal