Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.071 c
15-1174897756
passlight
2007-03-26 12:29
2007.04.22
Бесплатный (недорогой) компьютерный англо-русский словарь


1-1172676041
DenisNew
2007-02-28 18:20
2007.04.22
ширина закладки ttabsheet


2-1175586143
Woolen
2007-04-03 11:42
2007.04.22
CreateOleObject


2-1175156344
АндрейК
2007-03-29 12:19
2007.04.22
Уроветь TreeView


2-1175766834
delphi_
2007-04-05 13:53
2007.04.22
INI файл в DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский