С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 06.04.2011
Сообщений: 83
1
RAD XE3+

Использование XML

09.08.2021, 11:19. Показов 2820. Ответов 8

Author24 — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, MSXML2_TLB, Vcl.StdCtrls, ComObj;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  vXMLParserError:IXMLDOMParseError2;
  vXMLSchema:IXMLDOMSchemaCollection2;
  vXMLDoc:IXMLDOMDocument2;
  vXMLSchemaDoc:IXMLDOMDocument2;
  vStrs:TStringList;
  CodError:IXMLDOMParseErrorCollection;
  //CoDOMDocument60:CoDOMDocument;
   i :Integer;
begin
  vStrs := TStringList.Create();
  try
    //Загрузка схемы
    // путь к схеме 'c:\test\ListForRating_v04\ListForRating_v04.xsd'
    vXMLSchema:= CoXMLSchemaCache60.Create();
    vXMLSchemaDoc:= CoDOMDocument60.Create();
    vStrs.LoadFromFile( 'c:\test\ListForRating_v04\ListForRating_v04.xsd' );
    vXMLSchemaDoc.loadXML( vStrs.Text );
    if vXMLSchemaDoc.parseError.errorCode <> 0 then
      begin
        ShowMessage(Format('Ошибка при загрузке схемы <%s: %s>', [vXMLSchemaDoc.parseError.reason, vXMLSchemaDoc.parseError.srcText]));
        Exit;
      end;
    vXMLSchema.add('', vXMLSchemaDoc);
//Загрузка документа
    vXMLDoc:= CoDOMDocument60.Create();
    vXMLDoc.async := False;
    vXMLDoc.resolveExternals := false;
    vXMLDoc.validateOnParse := false;
    vXMLDoc.setProperty('MultipleErrorMessages',true);
    vStrs.Clear();
    vStrs.LoadFromFile( 'c:\test\ListForRating_v04\ListInfo_landRecord_003002000000_ed0b1077-d61a-447a-aa0f-fb80d4dcdaa2.xml' );
    vXMLDoc.loadXML( vStrs.Text );
    vXMLDoc.schemas := vXMLSchema;
    vXMLParserError := vXMLDoc.validate as IXMLDOMParseError2;
    Memo1.Clear;
    if vXMLParserError.errorCode <> 0 then
      begin
         CodError := vXMLParserError.allErrors;
         for I := 0 to CodError.length-1 do
        begin
        Memo1.Lines.Add(CodError.item[i].reason);
        Memo1.Lines.Add('*****');
        end;
      end
    else
      ShowMessage( 'Валидация документа проша успешно' );
  finally
    FreeAndNil( vStrs );
  end;
end;
 
end.
До этого не сталкивался с использование xml в Delphi. Вообщем проблема в
Delphi
1
2
    vXMLSchema:= CoXMLSchemaCache60.Create();
    vXMLSchemaDoc:= CoDOMDocument60.Create();
выдает ошибку "[dcc32 Error] Unit1.pas(42): E2003 Undeclared identifier: 'CoXMLSchemaCache60' "
я понимаю что я просто неправильно обращаюсь к компоненту или не хватает чего-то но что в инете не могу найти
Delphi
1
vXMLSchema:= CreateComObject('CLASS_XMLSchemaCache60') AS IXMLDOMSchemaCollection2;
этот вариант тоже пробовал.

Подскажите как правильно будет обратится? код привел весь, он проверяет XML на XSD схему.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.08.2021, 11:19
Ответы с готовыми решениями:

Где найти мануал по парсингу XML? Как работать с XML в Delphi (в частности, TXMLDocument)?
Всех приветствую! Раньше несколько лет работал в Матлабе, но теперь приспичило писать программу...

Использование подключенного XML
Собственно нашел возможность подключить XML файл используя средства студии. Как прочитать этот...

Использование XML и Java.
Господа, хочу попробовать использовать XML с Java. Примерно представляю что такое XML, но...

Поясните использование XML
В книгах у Албахари, Троелсена в лучшем случае даётся описание классов Xml и их методов. Но для...

8
Модератор
9644 / 6251 / 2426
Регистрация: 21.01.2014
Сообщений: 26,667
Записей в блоге: 3
09.08.2021, 11:35 2
Как-то сложно у Вас там все... Но попробуйте вот что: положите на форму компонент TXMLDocument и скомпилируйте проект. Требуемые модули автоматом добавятся в секцию uses и, скорее всего, это решит Вашу проблему...
0
0 / 0 / 0
Регистрация: 06.04.2011
Сообщений: 83
09.08.2021, 11:52  [ТС] 3
Как-то сложно у Вас там все... Но попробуйте вот что: положите на форму компонент TXMLDocument и скомпилируйте проект. Требуемые модули автоматом добавятся в секцию uses и, скорее всего, это решит Вашу проблему...
попробовал не помогло! ошибка таже.
так то код не мой отсюда взял
0
Модератор
9644 / 6251 / 2426
Регистрация: 21.01.2014
Сообщений: 26,667
Записей в блоге: 3
09.08.2021, 12:15 4
Цитата Сообщение от magistrmediv Посмотреть сообщение
код не мой отсюда взял
Ну так надо понимать же, в каком контексте дается код... А просто вырвать откуда-то что-то - это вообще не факт, что заработает... А если там библиотеки какие-то левые использовались? Не лучше ли озвучить точно задание и приложить файл?
0
5868 / 4596 / 1448
Регистрация: 14.04.2014
Сообщений: 20,393
Записей в блоге: 20
09.08.2021, 12:22 5
ну вообще надо понимать, что если вы объявляете переменную какого-то типа, то этот тип должен содержаться в каком-то модуле.
и если вы не знаете в каком, то сначала поиском по исходникам делфи пройтись
параллельно загуглить

вот например
CoXMLSchemaCache60
у меня установлен даркгугл, он в отличие от вашего просто гугла находит это слово легко, и на одном там сайте в начале есть даже
uses
MSXML2_TLB; // сам импортировал msxml6.dll
0
0 / 0 / 0
Регистрация: 06.04.2011
Сообщений: 83
09.08.2021, 13:22  [ТС] 6
Собственно код приведенный мной это и есть весь заимствованный код я ничего не правил!
библиотеку msxml6.dll уже импортировал до обращения на форум!
задача кода проста проверить xml документ на соответствие xsd схеме
0
5868 / 4596 / 1448
Регистрация: 14.04.2014
Сообщений: 20,393
Записей в блоге: 20
09.08.2021, 13:52 7
мы же вроде не код обсуждаем даже, а то, что использованные вами типы нигде не объявлены
раз прошло уже много времени с тех пор, то может
CoXMLSchemaCache60 превратилось уже в CoXMLSchemaCache160
0
Эксперт Pascal/Delphi
4918 / 2786 / 855
Регистрация: 04.10.2012
Сообщений: 10,148
09.08.2021, 16:31 8
Цитата Сообщение от D1973 Посмотреть сообщение
Как-то сложно у Вас там все
Цитата Сообщение от D1973 Посмотреть сообщение
Не лучше ли озвучить точно задание и приложить файл?
согласен по всем пунктам.
magistrmediv, Вам нужно спарсить XML?
0
5868 / 4596 / 1448
Регистрация: 14.04.2014
Сообщений: 20,393
Записей в блоге: 20
10.08.2021, 00:46 9
автор написал что цель проверить по XSD
0
10.08.2021, 00:46
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.08.2021, 00:46
Помогаю со студенческими работами здесь

Использование xml конфигов
Подскажите, пожалуйста, как пользоваться xml конфигами для IOS. Я ознакомился с Cisco IOS XR API...

использование simple API for XML
Кто имеет какую-нибудь информацию о SAX поделитесь. Я знаю, что ее применяют для разбора файлов...

LINQ to XML: использование атрибутов
привет всем, нужна помощь, в шарпе не силён есть вот такой кусок кода: XDocument xDocument =...

Использование Zip и xml файлов
Здравствуйте! У меня есть вопрос на который я не могу найти ответ : как использовать xml и zip...

Использование XML вместо INI в Builder5
Собственно нужно в пятом билдере найти какой-нибудь вариант чтобы читать (и неплохо бы писать)...

Формирование html из xml с использование xsl
Здравствуйте. Нужна помощь, есть некоторые недопонимания. У меня не работает вложенный цикл ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru