Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обращение к полю XML [D7]


Страницы:   1 2

XGarik ©   (2005-09-27 09:53:00) 

Доброго времени суток!

У меня запарка с преобразованием из XML (точнее одной его таблицы) в таблицу вида DBF! Можно ли сохранить таблицу XML-файла, как DBF-файл?

Конкретно:
Как обратиться ко всем полям таблицы records.
Например: records -> dobxod.

Структура XML следующая:

<?xml version="1.0" encoding="windows-1251" ?>
<ObxodDB>
 <xs:schema id="ObxodDB" xmlns="" xmlns:xs=" http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
   <xs:element name="ObxodDB" msdata:IsDataSet="true">
     <xs:complexType>
       <xs:choice maxOccurs="unbounded">
         <xs:element name="remark">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="nremark" type="xs:int" minOccurs="0" />
               <xs:element name="cremarkrash" type="xs:string" minOccurs="0" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
         <xs:element name="records">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="dobxod" type="xs:date" minOccurs="0" />
               <xs:element name="nmaror" type="xs:int" minOccurs="0" />
               <xs:element name="nnumbervv" type="xs:int" minOccurs="0" />
               <xs:element name="nvv" type="xs:int" minOccurs="0" />
               <xs:element name="cstatus" type="xs:string" minOccurs="0" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
       </xs:choice>
     </xs:complexType>
   </xs:element>
 </xs:schema>
</ObxodDB>


Заранее благодарю!


АлеКо   (2005-09-28 09:05:00) [21]

На сколько я помню надо создать файл трансформации твоего XML с расширением XTR
<XmlTransformation Version="1.0">
Я это делал с помощью утилиты XML Mapper ( поставляется с Delphi 6)
Далее надо указать TXMLTransform и в нем файл трансформации.
Вот как у меня выглядит это дело в потоке:

   CoInitialize(nil);
   XMLTrans:=TXMLTransform.Create(nil);
   DataSetXML:=TClientDataSet.Create(nil);
   DataSetP:= TDataSetProvider.Create(nil);

   XMLTrans.SourceXmlFile:=_XMLFile;
   XMLTrans.TransformationFile:=_XTRFile;
   DataSetP.DataSet:=DataSetXML;
   try
   DataSetXML.XMLData:=XMLTrans.Data;
   except
       ShowMessage('Ошибка получения данных');
   end;
   Synchronize(Update);
   XMLTrans.Destroy;
   DataSetXML.Destroy;
   DataSetP.Destroy;
   CoUnInitialize();

но мне не нравиться как это работает. Очень медленно.


XGarik   (2005-09-28 08:44:00) [22]

Я много чего уже испробовал: TXMLDocument, ClientDataSet и д.р. Ничего хорошего у меня из этого не вышло!
Впринципе, в свое время я писал даже класс для чтения xml-ки, используя чтение из файла, как текста и потом прозводил анализ.
Но сейчас я хочу сделать все правильно! Чтобы не просто работало для опред. ситуации, но чтобы для любой!
Помогите загрузить файл, скажем: 1.xml в ClientDataSet, дальше я сам разберусь!
У меня код:
procedure TForm1.Button1Click(Sender: TObject);
begin
clientdataset1.LoadFromFile('1.xml');
end;


Почему пишет ошибку: Mismatch in datapacket.


АлеКо   (2005-09-28 04:39:00) [23]

Для реализации DOM на вкладке Internet есть компонента TXMLDocument. Попробуй через него реализовать доступ к данным.(D6).


АлеКо   (2005-09-28 03:45:00) [24]

Вот может в эту сторону копать.

"Структура XML иерархична, и это фундаментальное положение необходимо принимать во внимание. Наиболее концептуальное представление иерархичной структуры известно как объектная модель документа (DOM). В этой модели документ XML рассматривается как набор узлов в древовидной структуре. Узлы могут быть элементами, атрибутами, текстом,
комментариями или инструкциями обработки."

С помощью DOM Вы можете обратиться к любому узлу документа.


XGarik   (2005-09-27 15:08:00) [25]

Вопрос не снят! Пожалуйста, помогите!


XGarik   (2005-09-27 14:20:00) [26]

Хорошо!
Тупой вопрос:
А, как тогда загрузить XML в ClientDataSet?


Desdechado   (2005-09-27 13:40:00) [27]

бегать надо по набору данных в ClientDataSet'е
или по парку :)


XGarik   (2005-09-27 11:08:00) [28]

Desdechado
А можно простенький примерчик обращения к полю XML? Или как пробежаться по xml-ке?


Desdechado   (2005-09-27 11:02:00) [29]

метод "влоб":
1. засасываешь XML  в ClientDataSet
2. выгружаешь в DBF нужной тебе структуры, пробегаясь по записям


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо