powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Чтение XML файла
20 сообщений из 20, страница 1 из 1
Чтение XML файла
    #34713272
Морик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создать XML файл программно у меня получилось, примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
ar doc : TXMLDocument;
nd,sndIXMLNode;
i:integer;
 begin 
doc:=TXMLDocument.Create( nil );
doc.Active:=true;
doc.Version:='1.0';
doc.Encoding:='windows-1251';
nd:=doc.AddChild('Товары');
nd.Attributes['Всего']:= 10 ;
       For  i:= 1   to   10   do 
       begin 
        snd:=nd.AddChild('Товарная позиция');
        snd.Attributes['номер']:=i;
                  snd.ChildValues ['DepOrdDate'] := 'Дата;
                  snd.ChildValues ['Department'] := 'Подразделение';
                  snd.ChildValues ['Tarif'] := 'Тариф';
      end;
doc.SaveToFile('c:\ 1 .xml');

Не могу понять, как при помощи этого же TXMLDocument обращаться к готовому файлу, и что либо из него читать?
...
Рейтинг: 0 / 0
Чтение XML файла
    #34713284
phoenix323F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 procedure  TForm1.ParseXML(FileName:  String );
 var 
  BorlandStock: IXMLNode;
  Price:  string ;
 begin 
  XMLDoc.LoadFromFile(FileName);
  XMLDoc.Active := True;
  BorlandStock := XMLDoc.DocumentElement.ChildNodes[ 0 ];
   //и т.д. 
 end ;
...
Рейтинг: 0 / 0
Чтение XML файла
    #34713387
Морик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ругается...
---------------------------
xml
---------------------------
Access violation at address 004600A9 in module 'xml.exe'. Write of address 8B8E6AAB.
---------------------------
ОК
---------------------------
...
Рейтинг: 0 / 0
Чтение XML файла
    #34713573
Морик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался. все работает
...
Рейтинг: 0 / 0
Чтение XML файла
    #34713576
phoenix323F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
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.
 procedure  TForm1.Button1Click(Sender: TObject);
 var 
  doc     : TXMLDocument;
  nd, snd, mnd : IXMLNode;
  i       : integer;
 begin 
  doc:=TXMLDocument.Create( nil );
  doc.Active:=true;
  doc.Version:='1.0';
  doc.Encoding:='windows-1251';
  nd:=doc.AddChild('Товары');
  nd.Attributes['Всего'] :=  10 ;


   for  i:= 1   to   10   do   begin 
        snd := nd.AddChild('Товарная_позиция');
        snd.Attributes['номер']:=i;
        mnd := snd.AddChild('DepOrdDate');
        mnd.NodeValue := 'Дата';
        mnd := snd.AddChild('Department');
        mnd.NodeValue := 'Подразделение';
        mnd := snd.AddChild('Tarif');
        mnd.NodeValue := 'Тариф';
   end ;
  doc.SaveToFile('c:\1.xml');
  doc.Free;
 end ;

 procedure  TForm1.Button2Click(Sender: TObject);
 var 
  doc: TXMLDocument;
 begin 
   try 
    doc:=TXMLDocument.Create( nil );
    doc.LoadFromFile('c:\1.xml');
    doc.Active:=true;
    ShowMessage(FormatXMLData(doc.XML.Text));
   finally 
    doc.Free;
   end ;
 end ;
...
Рейтинг: 0 / 0
Чтение XML файла
    #34713817
Морик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как проверить, существует ли определенный узел?
...
Рейтинг: 0 / 0
Чтение XML файла
    #34714080
phoenix323F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
doc.ChildNodes.FindNode()
...
Рейтинг: 0 / 0
Чтение XML файла
    #34716936
Морик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
phoenix323F
Код: plaintext
doc.ChildNodes.FindNode()


Но таким образом мы сразу же должны присвоить найденный элемент чему либо.
А мне просто надо узнать мол если элемент есть то делать тото, если его не существует то ничего не делать.
...
Рейтинг: 0 / 0
Чтение XML файла
    #34717031
а какой uses подключить для TXMLDocument ?
...
Рейтинг: 0 / 0
Чтение XML файла
    #34717047
Морик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
интересуюсьа какой uses подключить для TXMLDocument ?
msxml, xmldom, XMLIntf, msxmldom, XMLDoc;
...
Рейтинг: 0 / 0
Чтение XML файла
    #34718762
Морик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как проверить, существует узел или нет????
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Чтение XML файла
    #39769592
Tim Woo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дабы не плодить дубли

Есть xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<?xml version="1.0" encoding="utf-8"? >
<reginfo>
	<mac></mac>
	<ip></ip>
	<pc></pc>
	<id></id>
	<register>false</register>
</reginfo>



Есть кусок кода:
Код: pascal
1.
2.
3.
4.
XML := TXMLDocument.Create(Application);
XML.LoadFromXML(Report);
XML.Active := True;
RegRes := VarToStr(XML.DocumentElement.ChildNodes['reginfo'].Attributes['register']);



Но почему то RegRes = ''. Если вытаскивать отдельно Variant, тоже возвращается nil.
В чем ошибка?
...
Рейтинг: 0 / 0
Чтение XML файла
    #39769598
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tim WooЕсть xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<?xml version="1.0" encoding="utf-8"? >
<reginfo>
	<mac></mac>
	<ip></ip>
	<pc></pc>
	<id></id>
	<register>false</register>
</reginfo>



Есть кусок кода:
Код: pascal
1.
2.
3.
4.
XML := TXMLDocument.Create(Application);
XML.LoadFromXML(Report);
XML.Active := True;
RegRes := VarToStr(XML.DocumentElement.ChildNodes['reginfo'].Attributes['register']);



Но почему то RegRes = ''. Если вытаскивать отдельно Variant, тоже возвращается nil.
В чем ошибка?
register не атрибут узла reginfo, а подузел.
Атрибут - это когда <reginfo register="false" />
...
Рейтинг: 0 / 0
Чтение XML файла
    #39769599
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Чтение XML файла
    #39769600
Tim Woo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я правильно понял, то получается должно быть так:
Код: pascal
1.
XML.DocumentElement.ChildNodes['reginfo'].ChildNodes['register'].NodeValue


Однако, результат тот же.
...
Рейтинг: 0 / 0
Чтение XML файла
    #39769608
Tim Woo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
upd

Разобрался:
XML.DocumentElement.ChildNodes['register'].NodeValue

Но все же остались вопрос: Почему не нужно указывать ChildNodes['reginfo']?
...
Рейтинг: 0 / 0
Чтение XML файла
    #39769609
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tim Woo
Код: pascal
1.
XML.DocumentElement.ChildNodes['reginfo'].ChildNodes['register'].NodeValue

красное ненужно
...
Рейтинг: 0 / 0
Чтение XML файла
    #39769636
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tim Woo upd

Разобрался:
XML.DocumentElement.ChildNodes['register'].NodeValue

Но все же остались вопрос: Почему не нужно указывать ChildNodes['reginfo']?
DocumentElement - это и есть узел reginfo.

Из справки:
TXMLDocument.DocumentElement

Provides access to the root node of the XML document.
...
Рейтинг: 0 / 0
Чтение XML файла
    #39769847
Tim Woo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще 1 вопрос.
Как посчитать число нодов, соответствующих определенному имени?

На примере такого xml, посчитать сколько comp и сколько user
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<comp>
		<ip></ip>
		<name></name>
	</comp>
	<user>
		<id></id>
		<login></login>
	</user>

	Вышеописанные ноды повторяются множество раз
	
</data>



Заранее спасибо за ответ!
...
Рейтинг: 0 / 0
Чтение XML файла
    #39769951
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробежать по всем ChildNodes и проверить NodeName? В чем сложность-то?
Либо, если лениво, то Document.SelectByXPath('/data/comp').Count (названия условные)
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Чтение XML файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]