Форум: "Прочее";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
ВнизПроверка XML-файла Найти похожие ветки
← →
svbti (2007-03-27 15:26) [0]Здравствуйте, подскажите пожалуйста, как мне реализовать в Delphi следующее:
1. Проверку структуры XML-файла.
2. Проверку правильность заполнения XML-файла согласно XSD схеме.
Если кто-то знает как это сделать.... пишите...
ОЧЕНЬ НАДО...
Заранее благодарю....
← →
ANB © (2007-03-27 15:45) [1]
> 1. Проверку структуры XML-файла.
Первый пункт реализуется очень просто - загружаешь файл в TXMLDocument и если не словил ошибку - все кузяво. Словил - проблемы со структурой. :)
Со вторым пунктом чуток посложнее.
← →
vecna © (2007-03-27 18:08) [2]
procedure ValidateDocument(DocumentStream, SchemaStream: TStream);
var
LSchema: IXMLDOMDocument;
LDocument: IXMLDOMDocument2;
begin
LDocument := CoFreeThreadedDOMDocument40.Create;
LDocument.load(TStreamAdapter.Create(DocumentStream) as IStream);
LDocument.schemas := CoXMLSchemaCache40.Create;
LSchema := CoDOMDocument.Create;
LSchema.load(TStreamAdapter.Create(SchemaStream) as IStream);
LDocument.schemas.add("", LSchema);
with LDocument.validate do
if errorCode <> 0 then
raise Exception.Create(reason);
end;
← →
oldman © (2007-03-27 18:12) [3]
> ANB © (27.03.07 15:45) [1]
> Первый пункт реализуется очень просто - загружаешь файл
> в TXMLDocument и если не словил ошибку - все кузяво.
Не так все просто - у меня прога (не моя) выдала "неправильный формат файла" только из-за его имени! Хочешь верь, хочешь нет...
← →
SlymRO © (2007-03-28 09:54) [4]XMLValidate.js:
var sOutput = validateFile("100000.xml");
WScript.Echo(sOutput);
function validateFile(strFile)
{
// Create a schema cache and add books.xsd to it.
var xs = new ActiveXObject("MSXML2.XMLSchemaCache.4.0");
xs.add("", "ICHB_EA.xsd");
// Create an XML DOMDocument object.
var xd = new ActiveXObject("MSXML2.DOMDocument.4.0");
// Assign the schema cache to the DOMDocument"s
// schemas collection.
xd.schemas = xs;
// Load books.xml as the DOM document.
xd.async = false;
xd.validateOnParse = true;
xd.resolveExternals = true;
xd.load(strFile);
// Return validation results in message to the user.
if (xd.parseError.errorCode != 0)
{
return("Validation failed on " + strFile +
"\n=====================" +
"\nReason: " + xd.parseError.reason +
"\nSource: " + xd.parseError.srcText +
"\nLine: " + xd.parseError.line + "\n");
}
else
return("Validation succeeded for " + strFile +
"\n======================\n" +
xd.xml + "\n");
}
← →
svbti (2007-03-28 14:58) [5]
> procedure ValidateDocument(DocumentStream, SchemaStream:
> TStream);var LSchema: IXMLDOMDocument; LDocument: IXMLDOMDocument2;
> begin LDocument := CoFreeThreadedDOMDocument40.Create;
> LDocument.load(TStreamAdapter.Create(DocumentStream) as
> IStream); LDocument.schemas := CoXMLSchemaCache40.Create;
> LSchema := CoDOMDocument.Create; LSchema.load(TStreamAdapter.
> Create(SchemaStream) as IStream); LDocument.schemas.add("",
> LSchema); with LDocument.validate do if errorCode <>
> 0 then raise Exception.Create(reason);end;
Спасибочки, но подскажи пожалуйста, какой нужно подключить модуль для этой процедуры?
← →
vecna © (2007-03-28 17:46) [6]Нужен TLB файл из майкрософтского xml-парсера (Project-Import Type Library, выбрать Microsoft XML нужной версии)... и педаль "Create Unit"
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.05 c