Главная страница
    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.05 c
2-1175622889
Guest007
2007-04-03 21:54
2007.04.22
Как запустить файл?


15-1174909021
Правильный Вася
2007-03-26 15:37
2007.04.22
Winamp и русские имена песен в главном окне


4-1164785371
Dmitry_177
2006-11-29 10:29
2007.04.22
Второе меню в окне..


2-1175260650
Greenchel
2007-03-30 17:17
2007.04.22
http, ftp и т.д.


2-1175273495
Alexey (AZ)
2007-03-30 20:51
2007.04.22
Поистине ламерский вопрос о типе "file of TXRecord"





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский