Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.22;
Скачать: CL | DM;

Вниз

Проверка 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
2-1175156344
АндрейК
2007-03-29 12:19
2007.04.22
Уроветь TreeView


2-1175711062
sholomak
2007-04-04 22:24
2007.04.22
Работа с PDF


2-1175192929
aleko
2007-03-29 22:28
2007.04.22
ReadBuffer &amp; WriteBuffer


2-1175695555
Magedon
2007-04-04 18:05
2007.04.22
Как добавить свой пункт в контекстное меню Ворда?


15-1174733013
Alexander Panov
2007-03-24 13:43
2007.04.22
До чего ж плодовитый автор